Я довольно недавно знаком с Laravel. Я все еще пытаюсь это изучить. Мой вопрос:Laravel Eloquent Присоединиться
У меня есть 3 таблицы с именем
- игры
- game_options
game_platforms
У меня есть 3 модели для этих таблиц
игры Модель
class Game extends Eloquent { protected $table = 'games'; public function platforms() { return $this->hasManyThrough('GamePlatform','GameOptions','id','game_id'); } }
GamePlatform Модель
class GamePlatform extends Eloquent { protected $table = 'game_platform'; }
GameOption Модель
class GameOptions extends Eloquent { protected $table = 'game_options'; }
Так что, когда я
$game = Game::find(1)->platforms;
Это только показывает,
{"id":1,"platform_id":20,"game_id":1}
{"id":1,"platform_id":21,"game_id":1}
{"id":1,"platform_id":22,"game_id":1}
{"id":1,"platform_id":23,"game_id":1}
{"id":1,"platform_id":24,"game_id":1}
Но мне нужно название игры и платформы имена с тех идентификаторов. Дело в том, что я хочу сделать это только красноречиво. Я мог бы пойти с «DB» или oldschool SQL, но я хочу узнать, возможен ли этот способ или нет.
Также я ищу лучшую документацию/книги для laravel. Большинство из того, что я читал, только вводили laravel или слишком продвинуты для меня.
Я мог бы быть вне базы здесь, но я чувствую, что вы используете 'hasManyThrough', когда' ownToMany' будет соответствовать здесь. Я мало знаю о 'hasManyThrough', поэтому вы можете сказать мне, если я ошибаюсь, но, возможно, попробуйте изменить это. По крайней мере, тогда вызов '$ game-> platform()' даст вам 'Collection'' GameOption '' не 'GamePlatform' – alexrussell