A User
có một (hoặc 0) Company
và một số Company
thuộc về một và chỉ một User
. Tôi cố gắng lưu một công ty cho một người dùng nhưng nó thêm một mục mới trong cơ sở dữ liệu mỗi lần tôi kích hoạt lại phương thức lưu. Đó là một mối quan hệ một, vì vậy tôi mặc dù phương pháp save
trên User
.Lưu mối quan hệ một đến một trong Laravel
Vì vậy Company
có một phương pháp user()
:
public function user() {
return $this->belongsTo(User::class, 'user_id');
}
Và User
có một phương pháp company()
:
public function company() {
return $this->hasOne(Company::class, 'user_id');
}
Tôi đang cố gắng để tiết kiệm (để tạo hoặc cập nhật) Công ty của người dùng như thế này (trong Bộ điều khiển):
$company = new Company();
$company->name = 'Test';
User::findOrFail(1)->company()->save($company);
Lần đầu tiên tôi chạy mã này nó tạo ra mục nhập trong cơ sở dữ liệu (OK), nhưng lần thứ hai nó thêm một mục mới cho cùng một người dùng (Không OK). Tôi nghĩ rằng nó sẽ chỉ cập nhật các mục cơ sở dữ liệu.
Đây có phải là trục trặc (hoặc cái gì đó tôi không hiểu trong quan hệ 1-1) trong Laravel hoặc Tôi có làm gì sai không? (tôi suy nghĩ và hy vọng đó là mục đích thứ hai)
Kiểm tra câu trả lời này, nó có thể giúp bạn: http://stackoverflow.com/a/20764237/5122070 –
Cảm ơn, nhưng tôi không chắc chắn nó thực sự giúp cho vấn đề cụ thể này. Vấn đề của tôi là cụ thể hơn. Đó là về tiết kiệm (tạo hoặc cập nhật) trực tiếp trong mối quan hệ –