Я пытаюсь вернуть вложенный ответ JSON, нужно подключить несколько таблиц, но пока я просто пытаюсь с 3, уровни могут идти глубже. Мои модели следующие:
Обновление # 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» вложены, где они должны быть, как показано на ссылке здесь , но, если я попытаюсь добавить Match, вот так:
$mecevi = Sport::with('liga.mec')->get();
Я получаю узел «mec», который представляет собой пустой массив, как показано здесь , вместо того, чтобы идти на один уровень глубже, как в предыдущем примере.
Я также попытался сделать несколько условий (), которые вызывают ошибку. Вызов неопределенного метода Illuminate \ Database \ Query \ Builder :: mec ()
Обновление: все тот же, mec:[]
, пустой массив.
Я использую Laravel 4.2.
По моему мнению, вы хотите получить все matches
leagues
Проблема может быть во втором параметре в функции hasMany
public function mec(){ return $this->hasMany('Match', 'league_id'); }
Второй параметр должен быть foreign_key
public function mec(){ return $this->hasMany('Match', 'match_id', 'league_id'); }
Выяснилось, мои отношения в таблице были отключены, после предоставления всех условий, таких как return $this->hasMany('Comment', 'foreign_key', 'local_key');
все начало работать так, как должно. Спасибо всем.