У меня есть следующая основная схема:
игроки
id name
профили
id player_id email
подмножества
id profile_id alias
У меня создалось впечатление, что следующая операция была возможна при создании новой записи:
Player::create([ 'name' => 'Player 1', 'profile.email' => 'player1@email.com', 'profile.subset.alias' => 'Player 1 alias' ]);
Поскольку этот код, похоже, не работает, все равно сохранить записи отношений вместе с методом create?
В принципе, вы не можете сделать это так просто, как кажется.
В документах все связанные модели создаются после создания базовой модели
$profile = new Profile(array('email' => 'player1@email.com','alias'=>'Player 1 alias')); $player = new Player(array('name'=>'Player 1')); $player = $post->profile()->save($profile);
Однако, если вы действительно хотите сделать это за один раз, вы можете перезаписать метод save()
в модели Player:
public function save(){ Database::transaction(function() { $profileModel = new Profile($this->profile); parent::save(); $this->profile()->insert($profileModel); }); }
Затем вы передадите массив методу «Игрок», например:
array( name='Player name', profile=>array( email=>'player1@email.com', subset=>array( alias=>'Player 1 alias' ) );
Хотя это не рекомендуется.
Пожалуйста, прочитайте больше о том, как сохранить модели Eloquent и отношения:
Учебное пособие 1 Учебное пособие 2
Повсюду предлагается сначала создать базовую модель, а затем соответствующие модели.