Создание новой записи и отношений за один раз

У меня есть следующая основная схема:

игроки

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

Повсюду предлагается сначала создать базовую модель, а затем соответствующие модели.