Задать вопрос

Как выбрать записи через, где отношение имеет условие?

Приветствую, прочитал документацию, но нужного так и не нашел.
Есть 2 таблицы: Первая имеет ссылку на вторую.
Example (type_id | int:255) -> Types (id | int:255, name | string)
Нужно вытащить все записи из Example где type_id равно id из таблицы типов, где name = 'example'.
То есть в таблице типов ищем по имени 'example', у него будет id == 3, например. И уже Example ищет по type_id == 3.
Сам вопрос состоит как сделать это используя модель Example и её отношения.

Example::where('types', function ($query) {
            $query->select('id')
                ->from(with(new Type())->getTable())
                ->where('name', 'пример');
        })->get();


То есть в данном случае можно описать это таким образом. Но хотелось бы найти красивый вариант с отношением.
  • Вопрос задан
  • 128 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Loftschool
    Комплексное обучение PHP
    6 недель
    Далее
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Skillbox
    Профессия PHP-разработчик с нуля до PRO
    7 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
Fernus
@Fernus
Техник - Механик :)
// types - это отношение один ко многим

$rs = Example::whereHas('types', function($q) {
    $q->where('name', 'пример');
})->get();


Документация с примерами
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы