В Laravel отношение «один к одному» относится к отношениям между двумя таблицами базы данных, где каждая запись в одной таблице связана ровно с одной записью в другой таблице. Laravel предоставляет несколько методов для определения отношений «один к одному» и работы с ними. Вот некоторые из часто используемых методов с примерами кода:
- hasOne(): этот метод определяет связь «один к одному» в текущей модели.
// User model
public function phone()
{
return $this->hasOne(Phone::class);
}
- belongsTo(): этот метод определяет обратную связь «один-к-одному».
// Phone model
public function user()
{
return $this->belongsTo(User::class);
}
- with(): этот метод позволяет быстро загружать связи для оптимизации запросов к базе данных.
$users = User::with('phone')->get();
foreach ($users as $user) {
echo $user->phone->number;
}
- create(): этот метод создает новый экземпляр связанной модели.
$user = User::find(1);
$phone = $user->phone()->create([
'number' => '1234567890',
]);
- save(): этот метод сохраняет связанный экземпляр модели.
$user = User::find(1);
$phone = new Phone(['number' => '1234567890']);
$user->phone()->save($phone);
- update(): этот метод обновляет связанный экземпляр модели.
$user = User::find(1);
$user->phone()->update(['number' => '0987654321']);
- delete(): этот метод удаляет связанный экземпляр модели.
$user = User::find(1);
$user->phone()->delete();