用户有多个配置文件配置文件属于用户。
以下工作:
$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();