
root
10.01.2017
16:19:33
Нет. Отрабатывает всё хорошо

D'
10.01.2017
16:19:55

root
10.01.2017
16:20:03

Arthur
10.01.2017
16:20: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
Понял. Значит через отношения. Ок. спасибо пошел писать дальше

rei
10.01.2017
17:19:00

Google

rei
10.01.2017
17:21:20

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
какие теги, чтобы код отображался как код?
А если в модели 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
это не то что нужно, но проверим вообще работает ли

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

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
соре \
пробуй так $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
Чел за копейку даже слова не сказал, а вы?