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

Метод belongsTo

Метод belongsTo применяется в моделях Eloquent для определения отношения, когда одна модель принадлежит другой. Например, модель Article принадлежит модели User, а модель Comment принадлежит модели Article. Первым параметром передаётся имя связанной модели, вторым - внешний ключ (по умолчанию используется имя метода с суффиксом _id), третьим - локальный ключ (по умолчанию id).

Синтаксис

<?php Model::class ?>

Определение отношения в модели:

<?php namespace AppModels; use IlluminateDatabaseEloquentModel; class Article extends Model { public function user() { return $this->belongsTo(User::class); } } ?>

Использование отношения в коде:

<?php $article = Article::find(1); $user = $article->user; echo $user->name; ?>

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

"John Doe"

При стандартной настройке предполагается, что таблица articles имеет внешний ключ user_id, который ссылается на поле id в таблице users.

Пример с указанием внешнего ключа

Если внешний ключ отличается от стандартного имя_метода_id, его можно передать вторым параметром:

<?php namespace AppModels; use IlluminateDatabaseEloquentModel; class Article extends Model { public function author() { return $this->belongsTo(User::class, 'author_id'); } } ?>

Теперь отношение использует поле author_id вместо user_id. Получить автора статьи:

<?php $article = Article::find(1); $author = $article->author; echo $author->email; ?>

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

"john@example.com"

Пример с указанием локального ключа

Если связанная модель использует нестандартный локальный ключ, его можно передать третьим параметром:

<?php namespace AppModels; use IlluminateDatabaseEloquentModel; class Article extends Model { public function user() { return $this->belongsTo(User::class, 'user_id', 'uuid'); } } ?>

В этом случае внешний ключ user_id связывается с полем uuid в таблице users. Пример использования:

<?php $article = Article::find(2); $user = $article->user; echo $user->uuid; ?>

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

"550e8400-e29b-41d4-a716-446655440000"

Пример с использованием в запросе

Метод belongsTo также можно использовать в запросах для фильтрации через отношение:

<?php use AppModelsArticle; $articles = Article::whereHas('user', function ($q) { $q->where('active', true); })->get(); foreach ($articles as $article) { echo $article->title; } ?>

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

["article 1", "article 2", "article 3"]

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

  • метод hasOne,
    который определяет отношение "один к одному"
  • метод hasMany,
    который определяет отношение "один ко многим"
  • метод belongsToMany,
    который определяет отношение "многие ко многим"
  • метод morphTo,
    который определяет полиморфное отношение
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить