Ich habe eine Eins-zu-Eins-unidirektionale Beziehung.Laravel One-to-One einzigartige Constrait
class User extends Model
{
public $timestamps = false;
public function profile()
{
return $this->hasOne(Profile::class);
}
}
class Profile extends Model
{
public $timestamps = false;
}
Ich möchte ein Benutzer mit einem einzigen Profil erstellen:
$user = User::firstOrCreate([
'name' => 'John',
'email' => '[email protected]'
]);
$profile = new Profile([
'age' => 'age',
'sex' => 'sex'
]);
$user->profile()->save($profile);
Das Ausführen dieses Befehls mehrere Male erstellt ein Benutzer mit mehreren Profilen ohne Ausnahme/dass User-Modell Warnung wird mehrere Beziehungen haben. Wie kann ich eine Einschränkung erstellen oder sicherstellen, dass der Benutzer nur ein Profil hat?
Update:
Weil mein Befehl mehrmals ausführen kann, unique
auf profile_id
eine Exception aus, die nicht ideal in meinem Fall ist. Ich am Ende so etwas wie dies zu tun:
$user = User::firstOrCreate([
'name' => 'John',
'email' => '[email protected]'
]);
$user->profile()->firstOrCreate([
'age' => 'age',
'sex' => 'sex'
]);