Я пытаюсь вернуть вложенный ответ JSON, нужно подключить несколько таблиц, но пока я просто пытаюсь с 3, уровни могут идти глубже. Мои модели являются следующие:Laravel Eloquent nesting
Update # 1:
class Sport extends Eloquent {
protected $table = 'sportovi';
protected $fillable = ['id', 'sport_eng'];
public $timestamps = false;
public function liga(){
return $this->hasMany('League', 'sport_id');
}
}
class League extends Eloquent {
protected $table = 'lige';
protected $fillable = ['league_id', 'liga', 'sport_id'];
public $timestamps = true;
public function mec(){
return $this->hasMany('Match', 'match_id');
}
}
class Match extends Eloquent {
protected $table = 'mecevi';
protected $fillable = ['match_id', 'home', 'away', 'kotime', 'day', 'kolo', 'sport_id', 'league_id', 'date', 'long_id'];
public $timestamps = false;
public function liga(){
return $this->belongsTo('Match', 'league_id');
}
}
Если я:
$sportovi = Sport::with('liga')->get();
return $sportovi;
все нормально, дети "Lige" вложены, где они должны быть, как показано на ссылка here, но, если я пытаюсь добавить матч, как это:
$mecevi = Sport::with('liga.mec')->get();
я получаю «тес» узел, который является пустым массивом, как показано here, вместо этого на один уровень глубже, как в предыдущем примере.
Я также попытался сделать несколько с() условия, которые выдает ошибку Вызов неопределенной метод Осветите \ Database \ Query \ Builder :: MEC()
Обновление: Тем не менее то же самое, mec:[]
, пустой массив.
Я использую Laravel 4.2.
Что произойдет, если вы сделаете это: Leage :: first() -> mec; ? –
То же, что и спорт :: с ('liga') -> get(); –
С первого изображения, почему у вас есть как 'id', так и' leaque_id'? какую колонку вы используете для отношений между «Лигой-> Матчем»? – mininoz