У меня есть взаимно однозначное отношение.laravel один-на-один уникальный contrait
class User extends Model
{
public $timestamps = false;
public function profile()
{
return $this->hasOne(Profile::class);
}
}
class Profile extends Model
{
public $timestamps = false;
}
Я хочу, чтобы создать пользователя с одного профиля:
$user = User::firstOrCreate([
'name' => 'John',
'email' => '[email protected]'
]);
$profile = new Profile([
'age' => 'age',
'sex' => 'sex'
]);
$user->profile()->save($profile);
Выполнение этой команды несколько раз создает один пользователь с несколькими профилями без исключения/предупредив, что модель пользователя будет иметь несколько отношений. Как создать ограничение или убедиться, что у пользователя будет только один профиль?
Update:
Потому что моя команда может выполняться несколько раз, unique
на profile_id
сгенерирует исключение, которое не является идеальным в моем случае. Я в конечном итоге делает что-то вроде этого:
$user = User::firstOrCreate([
'name' => 'John',
'email' => '[email protected]'
]);
$user->profile()->firstOrCreate([
'age' => 'age',
'sex' => 'sex'
]);