在两个表之间插入关系


laravel 5 insert relationship between two tables

用户有多个配置文件配置文件属于用户。

以下工作:

    $u = User::firstOrNew(['email' => $s['email']]);
    $u->name   = $s['name'];
    $u->avatar = $s['avatar'];
    $u->save();
    $p = new UserProfile;
    $p->provider     = $s['provider'];
    $p->provider_uid = $s['provider_uid'];
    if ($u->profiles()->save($p)) {
    }

但是我不太喜欢,有没有更好更精简的方式?为什么我不能保存在一个原子插入?

您试图将数据保存到2个不同的表,这就是为什么您不能使用单个插入

你这样做的方式——首先保存父对象,然后关联子对象并保存它——是通常的做法。

您还可以查看Eloquent模型的push()方法,它的工作方式与save()类似,但也在相关模型上调用save()。使用此方法可以替换以下代码:

$a = new A;
$a->save();
$b = new B;
$b->a()->associate($a);
$b->save();

$a = new A;
$b = new B;
$b->a()->associate($a);
$a->push();