在Laravel中创建模型实例时,我似乎对如何自动保存相关模型感到困惑。考虑:
用户模型:
<?php
// file: User.php
class User extends Eloquent
{
public function role()
{
$this->hasOne('Role');
}
}
角色模型:
<?php
// file: Role.php
class Role extends Eloquent
{
public function user()
{
$this->belongsTo('User');
}
}
现在假设我想创建一个新用户并为其分配一个角色。如果我在保存用户之后设置角色关系,那么很容易让关联工作。例如,这很有效:
$user = new User();
$user->name = 'Bobby';
$user->save();
$role = new Role();
$role->type = "Super Hero";
$user->role()->save($role);
但是,如果我想push
或cascade
保存,则无法分配foreignKey。我只想save()
一次,并通过级联保存关系。例如,这不起作用:
$user = new User();
$user->name = 'Bobby';
$role = new Role();
$role->type = "Super Hero";
$user->role = $role; // or $user->role()->save($role);
$user->save(); // push()?
这与Doctrine 2处理persisting
的方式有些相似。是否可以在Eloquent中同时创建?