使用Eloquent ORM创建模型时自动保存关系

时间:2016-01-28 22:00:16

标签: php laravel orm eloquent

在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);

但是,如果我想pushcascade保存,则无法分配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中同时创建

0 个答案:

没有答案