【发布时间】:2015-12-06 12:28:52
【问题描述】:
User 有一个(或零)Company,Company 属于一个且仅一个 User。我尝试为用户保存公司,但每次我重新触发保存方法时,它都会在数据库中添加一个新条目。这是一对一的关系,所以我在User 上使用了save 方法。
所以Company 有一种方法user():
public function user() {
return $this->belongsTo(User::class, 'user_id');
}
而User 有一种方法company():
public function company() {
return $this->hasOne(Company::class, 'user_id');
}
我正在尝试像这样(在控制器中)保存(因此创建或更新)用户的公司:
$company = new Company();
$company->name = 'Test';
User::findOrFail(1)->company()->save($company);
我第一次运行此代码时,它会在数据库中创建条目(OK),但第二次它会为同一用户添加一个新条目(Not OK)。我以为它只会更新数据库条目。
这是 Laravel 中的一个小故障(或者我在一对一关系中不理解的问题)还是 我做错了什么?(我认为并希望这是第二个目的)
【问题讨论】:
-
检查这个答案,它可能会帮助你:stackoverflow.com/a/20764237/5122070
-
谢谢,但我不确定它是否真的有助于解决这个特殊问题。我的问题更具体。这是关于直接在关系中保存(创建或更新)
-
@rap-2-h Mihkel Allorgs 参考是正确的。也可以对关系使用
updateOrCreate方法。这是最好的方法。看我的回答stackoverflow.com/a/56002200/2311074