我有以下基本架构:
玩家
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方法一起保存?
答案 0 :(得分:1)
基本上,你不能像看起来那样容易。
在文档中,所有相关模型都是在创建基本模型后创建的
$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()
方法:
public function save(){
Database::transaction(function() {
$profileModel = new Profile($this->profile);
parent::save();
$this->profile()->insert($profileModel);
});
}
然后,您将数组传递给Player方法,如:
array(
name='Player name',
profile=>array(
email=>'player1@email.com',
subset=>array(
alias=>'Player 1 alias'
)
);
虽然这不是推荐的行动。
请阅读有关如何保存Eloquent模型和关系的更多信息:
建议首先创建基本模型,然后是相关模型。