@laravel_pro

Страница 297 из 2014
root
10.01.2017
16:19:33
Нет. Отрабатывает всё хорошо

Google
root
10.01.2017
16:22:29
где были? непонятно
Есть модели ТУР, МАТЧИ в которых прописаны связи один ко многим. Я делаю запрос $matchdays = \App\Matchday::find(1)->matches; соответственно получаю на выходе коллекцию туров и связанных с ними коллекцию матчей. В матчах указаны коды команды team1_id и team2_id. Хотелось бы вместо них получить названия команд которые хранятся в таблице команды

Arthur
10.01.2017
16:24:04
у тебя маленькое приложение, сделай просто в цикле

root
10.01.2017
16:25:25
А цикл где писать в шаблоне?

Arthur
10.01.2017
16:25:47
там где тебе нужно получить имя

foreach ($matches as $match) { $match->teamOne->name; $match->teamTwo->name; }

грубо говоря

в teamOne и teamTwo через hasOne

root
10.01.2017
16:29:23
Ок. Тогда вот ещё вопрос что будет дешевле? Делать в цикле каждый раз запрос на получение имени команды или создать условие типа switch()?

Arthur
10.01.2017
16:30:16
что?

root
10.01.2017
16:30:53
Ну типа switch($team_id) case 1: case 2:

Arthur
10.01.2017
16:31:18
не надо так делать

root
10.01.2017
16:31:49
Понял. Значит через отношения. Ок. спасибо пошел писать дальше

Google
root
10.01.2017
17:36:51
Уже сделал

$matchdays = Matchday::with('matches')->get();Получил коллекцию

А далее в шаблоне @foreach ($matchdays as $matchday) <tr> <td>{{ $matchday->number }} тур</td> </tr> @foreach ($matchday->matches as $match) <tr> <td>{{ $match->number }}</td> <td>{{ $match->date }}</td> <td>{{ App\Team::find($match->team1_id)->name }}</td> <td>{{ $match->score1 }} : {{ $match->score2 }}</td> <td>{{ App\Team::find($match->team2_id)->name }}</td> </tr> @endforeach @endforeach

rei
10.01.2017
17:39:36
root
10.01.2017
17:41:35
А как правильнее?

rei
10.01.2017
17:42:11
$matchdays = Matchday::with('matches')->get();Получил коллекцию
попробовал бы как я написал, если бы получилось, мог бы делать так {code} foreach($matchdays as $matchday) { foreach($matches as $match){ $match->teamFirst->name; $match->teamSecond->name; } } {code}

какие теги, чтобы код отображался как код?

А если в модели Match прописать отношения teamFirst() и teamSecond() и вызывать как $matchdays = \App\Matchday::find(1)->matches->with('teamFirst', 'teamSecond'); в отношениях $this->belongsTo(Team::class, 'id', 'team1_id') $this->belongsTo(Team::class, 'id', 'team2_id')

пробуй

root
10.01.2017
17:46:49
Ща попробую

Ильдар
10.01.2017
17:48:04
Здравствуйте, посоветуйте книжку по php7, желательно чтобы простым языком написано)

?
10.01.2017
17:49:14
@Tahtabaev уже знаешь php 5?

Ильдар
10.01.2017
17:49:27
Не

?
10.01.2017
17:50:17
Начни с него пока, а книги по семерке не сильно отличаюися

да и на английском в основном

Ильдар
10.01.2017
17:51:31
Ок

root
10.01.2017
17:53:29
Тоже посоветовал бы с 5 начать

johan_krs
10.01.2017
17:53:46
С 4 хохохо

Dan
10.01.2017
17:54:30
С 7 начинай, никого не слушай

Google
Dan
10.01.2017
17:54:48
И только на английском

На русском материалов нет

Юрий
10.01.2017
18:02:07
с 7.1

а лучше почитай драфты 7.2 и сразу с него

Ильдар
10.01.2017
18:02:45
Я тут подумал, лучше 8 подожду, сразу с него)))

root
10.01.2017
18:06:35
rei не получается. Ошибки

rei
10.01.2017
18:06:53
root
10.01.2017
18:07:01
То на метод ругается, то на связь

rei
10.01.2017
18:07:09
ну напиши

сюда

root
10.01.2017
18:08:50
Ща. В модели МАТЧ создал отношения. public function teamFirst() { return $this->belongsTo(App\Team::class, 'id', 'team1_id'); } public function teamSecond() { return $this->belongsTo(App\Team::class, 'id', 'team2_id'); }Верно?

rei
10.01.2017
18:09:11
да

root
10.01.2017
18:10:03
Стопэ, а в модели Команда что писать? Какая связь там будет

?

rei
10.01.2017
18:10:35
можешь ничего не писать там

root
10.01.2017
18:11:11
BadMethodCallException in Macroable.php line 74: Method with does not exist.

rei
10.01.2017
18:17:52
BadMethodCallException in Macroable.php line 74: Method with does not exist.
попробуй $matchdays = \App\Matchday::with('matches.teamFirst');

это не то что нужно, но проверим вообще работает ли

root
10.01.2017
18:19:24
Builder {#180 ▼ #query: Builder {#179 ▶} #model: Matchday {#173 ▶} #eagerLoad: array:2 [▶] #macros: [] #onDelete: null #passthru: array:11 [▶] #scopes: [] #removedScopes: [] }

rei
10.01.2017
18:20:04
оп отлично, а раскрой #model и #eagerLoad

Google
root
10.01.2017
18:22:37
#model: Matchday {#173 ▼ +timestamps: false #connection: null #table: null #primaryKey: "id" #keyType: "int" #perPage: 15 +incrementing: true #attributes: [] #original: [] #relations: [] #hidden: [] #visible: [] #appends: [] #fillable: [] #guarded: array:1 [▶] #dates: [] #dateFormat: null #casts: [] #touches: [] #observables: [] #with: [] #morphClass: null +exists: false +wasRecentlyCreated: false }

#eagerLoad: array:2 [▼ "matches" => Closure {#182 ▶} "matches.teamFirst" => Closure {#181 ▶} ]

rei
10.01.2017
18:24:36
соре, допиши get() еще

$matchdays = \App\Matchday::with('matches.teamFirst')->get();

root
10.01.2017
18:27:42
FatalErrorException in Model.php line 797: Class 'App\App\Team' not found

rei
10.01.2017
18:28:38
смотри модель Match

в функции отношения \App\Team ?

по коду что выше ты кидал - без "\". пропиши вначале

root
10.01.2017
18:30:04
<?php namespace App; use Illuminate\Database\Eloquent\Model; class Match extends Model { public $timestamps = false; public function matchday() { return $this->belongsTo('App\Matchday'); } public function teamFirst() { return $this->belongsTo(App\Team::class, 'id', 'team1_id'); } public function teamSecond() { return $this->belongsTo(App\Team::class, 'id', 'team2_id'); } }

rei
10.01.2017
18:30:22
return $this->belongsTo(\App\Team::class, 'id', 'team1_id');

Admin
ERROR: S client not available

rei
10.01.2017
18:30:23
вот так

а лучше написать где веерху use App\Team

и в коде уже использовать просто Team

root
10.01.2017
18:30:57
по коду что выше ты кидал - без "\". пропиши вначале
FatalErrorException in CalendarController.php line 27: Class 'App\Http\Controllers\App\Matchday' not found

rei
10.01.2017
18:31:31
<?php namespace App; use Illuminate\Database\Eloquent\Model; class Match extends Model { public $timestamps = false; public function matchday() { return $this->belongsTo('App\Matchday'); } public function teamFirst() { return $this->belongsTo(Team::class, 'id', 'team1_id'); } public function teamSecond() { return $this->belongsTo(Team::class, 'id', 'team2_id'); } }

вот так

это пространство имен, оно ж все в одной папке - и так друг друга видят модельки

root
10.01.2017
18:33:22
QueryException in Connection.php line 729: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'teams.team1_id' in 'where clause' (SQL: select * from `teams` where `teams`.`team1_id` in (1, 2, 3, 4))

Golib
10.01.2017
18:33:53
приехали короче))

Google
rei
10.01.2017
18:34:47
вот так пиши )

<?php namespace App; use Illuminate\Database\Eloquent\Model; class Match extends Model { public $timestamps = false; public function matchday() { return $this->belongsTo('App\Matchday'); } public function teamFirst() { return $this->belongsTo(Team::class, 'team1_id', 'id'); } public function teamSecond() { return $this->belongsTo(Team::class, 'team2_id', 'id'); } }

блин должно получится, самому интересно :)

root
10.01.2017
18:35:40
??

Golib
10.01.2017
18:35:40
интересно руки откуда))

F01134H
10.01.2017
18:35:47
бля ну че за пиздец

ну есть же pastebin

root
10.01.2017
18:35:58
Заработало! Еху!

rei
10.01.2017
18:36:08
соре \

Заработало! Еху!
так у тебя теперь только teamFirst, надо еще второй

пробуй так $matchdays = \App\Matchday::with('matches.teamFirst', 'matches.teamSecond');

$matchdays = \App\Matchday::with('matches.teamFirst', 'matches.teamSecond')->get();

долго возишься я курить

root
10.01.2017
18:39:14
??

Еху! Работает как часы

Чувак в карму тебе 1000

Знаешь своё дело

Wolf
10.01.2017
18:39:43
лучше в кошель)

ухаха

root
10.01.2017
18:39:57
Кодер с большой буквы

Человечище

Wild
10.01.2017
18:40:33
Кодера с большой буквы в карман не положишь

root
10.01.2017
18:41:01
Чел за копейку даже слова не сказал, а вы?

Страница 297 из 2014