2017-01-09 4 views
2

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' 
]); 

Antwort