РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
178 of 1392 menu

Метод hasOne

Метод hasOne определяет отношение один-к-одному в Eloquent. Он используется для указания, что текущая модель имеет одну связанную модель. Первым параметром передаётся класс связанной модели, вторым - имя внешнего ключа, третьим - имя локального ключа. Если внешний ключ и локальный ключ не указаны, Eloquent использует стандартные соглашения.

Синтаксис

<?php Model::hasOne(RelatedModel::class, $foreignKey, $localKey); ?>

Пример

Давайте определим отношение между пользователем и его профилем. У пользователя может быть только один профиль:

<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; class User extends Model { public function profile() { return $this->hasOne(Profile::class); } } ?>

А теперь получим профиль пользователя с id равным 1:

<?php use App\Models\User; $user = User::find(1); $profile = $user->profile; echo $profile->bio; ?>

Результат выполнения кода:

"Full-stack developer with 5 years of experience"

Пример

Теперь рассмотрим случай, когда нужно указать внешний ключ и локальный ключ вручную. Предположим, у нас есть модель Phone, связанная с моделью User через поле user_identifier:

<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; class User extends Model { public function phone() { return $this->hasOne(Phone::class, 'user_identifier', 'id'); } } ?>

Получим номер телефона пользователя:

<?php use App\Models\User; $user = User::find(2); $phone = $user->phone; echo $phone->number; ?>

Результат выполнения кода:

"+1234567890"

Пример

Метод hasOne также позволяет создавать связанные записи. Создадим новый профиль для пользователя:

<?php use App\Models\User; $user = User::find(3); $profile = $user->profile()->create([ 'bio' => 'Laravel developer', 'city' => 'New York' ]); echo $profile->bio; ?>

Результат выполнения кода:

"Laravel developer"

Смотрите также

  • метод belongsTo,
    который определяет обратное отношение один-к-одному
  • метод hasMany,
    который определяет отношение один-ко-многим
  • метод morphOne,
    который определяет полиморфное отношение один-к-одному
  • метод with,
    который выполняет жадную загрузку отношений
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить