A User
ma jeden (lub zero) Company
, a Company
należy do jednego i tylko jednego User
. Próbuję zapisać firmę dla użytkownika, ale dodaje ona nowy wpis do bazy danych za każdym razem, gdy ponownie uruchomię metodę składowania. Jest to relacja jeden do jednego, więc ja na przykład save
metoda na metoda na User
.Zapisywanie relacji jeden do jednego w Laravel
Więc Company
ma jedną metodę user()
:
public function user() {
return $this->belongsTo(User::class, 'user_id');
}
I User
ma jedną metodę company()
:
public function company() {
return $this->hasOne(Company::class, 'user_id');
}
próbuję zapisać (tak utworzenia lub aktualizacji) firmę użytkownika tak (w sterowniku):
$company = new Company();
$company->name = 'Test';
User::findOrFail(1)->company()->save($company);
Po raz pierwszy uruchomię ten kod, który tworzy wpis w bazie danych (OK), ale drugi raz dodaje nowy wpis dla tego samego użytkownika (Nie OK). Myślałem, że zaktualizuje tylko wpis w bazie danych.
Czy to błąd (lub coś, czego nie rozumiem w relacji jeden do jednego) w Laravel lub czy robię coś nie tak? (myślę i mam nadzieję, że to drugi cel)
Sprawdź tę odpowiedź, to może pomóc: http://stackoverflow.com/a/20764237/5122070 –
Dzięki, ale nie jestem pewien, że to naprawdę pomaga do tego konkretnego problemu. Mój problem jest bardziej szczegółowy. Chodzi o zapisywanie (tworzenie lub aktualizowanie) bezpośrednio w relacji –