Запрос связанных записей с помощью Eloquent - PullRequest
0 голосов
/ 05 февраля 2019

Итак, у меня есть две базы данных: - Список башенных сайтов.- Список точек доступа, на этих сайтах.(На некоторых сайтах нет точек доступа).

Скажем, у меня есть sites (A, B, C), которые имеют site_id из 1, 2, 3.

Сайт A имеет 3 точек доступа, B имеет 4, а C имеет 0.

Итак, я хочутаблица, которая возвращает только сайты, которые имеют точки доступа.Так что A и B. должны быть возвращены только.

У меня есть модель для каждой, которая имеет всю свою информацию и связывает их через ID на сайтах и ​​site_id в AccessPoints.

Что было бы хорошим запросомзапустить с помощью Eloquent?

Прямо сейчас я бегу:

$sites = Sites::with(['AccessPoints' => function($query) { 
$query->where('status', '=', 'production');
}])
->with('AccessPoints.Associations')
->orderBy('name', 'asc')
->get();

Просто чтобы дать некоторое представление.Состояние производства - это то, что сообщает базе данных, существует ли точка доступа и используется ли она.Таким образом, производство означает, что оно существует до сих пор.Таким образом, все сайты, у которых нет точек доступа с рабочим статусом, не должны отображаться.

Параметр with (AccessPoints.Associations) - это второй запрос, который связывает третью таблицу для получения количества людей, использующих каждый доступ.точка, которая работает правильно.Но первая часть запроса не так.Я все еще получаю сайты с aps, которые списаны или вообще не имеют aps.

1 Ответ

0 голосов
/ 05 февраля 2019

Ваш текущий запрос даст вам все точки доступа, потому что у вас нет условия.Следующее даст вам желаемый результат:

<?php 

$sites = Sites::whereHas('AccessPoints', function($q){
    $q->where('status', '=', 'production');
})
->with('AccessPoints.Associations')
->orderBy('name', 'asc')
->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...