Laravel — Запрос 3 таблиц на основе отношений

Я хочу запросить 3 отдельные таблицы одновременно. Основным является Criteria, два has Many таблицы, связанные criteria_id являются Bedrooms а также Properties,

Criteria может иметь много Bedrooms и много Properties:

Скриншот

Модель критериев

public function bedrooms()
{
return $this->hasMany('Bedroom');
}

public function properties()
{
return $this->hasMany('Property');
}

Я не уверен, если это возможно, но я хочу запросить обе эти таблицы, а также Criteria чтобы увидеть, какие критерии имеют определенную спальню и определенный тип недвижимости. Обратите внимание, что может быть несколько спален и свойств, сохраненных для каждого критерия_идентификатора.

Пока что мой запрос:

$criterias = Criteria::select('id')
->where('min', '<=', Input::get('single_value'))
->lists('id');

Мое единственное логическое объяснение —

Получить все критерии, где мин <= Значение и Критерии. Спальни = 1 и
Criteria.Properties = 5.

Как если бы перебрать и посмотреть, есть ли у критерия спальня / свойство с сохраненным этим значением.

Большое спасибо за вашу помощь.

0

Решение

Если вы ищете только критерии, которые соответствуют вашим ограничениям, вы можете использовать whereHas() на спальне и имущественных отношениях. Затем добавьте свой where() а также lists(),

$bedroom_id = '1';
$property_id = '5';

$criteria = Criteria::whereHas('bedrooms', function($q) use ($bedroom_id) {
$q->where('bedroom', $bedroom_id);
})->whereHas('properties', function($q) use ($property_id) {
$q->where('property', $property_id);
})->where('min', '<=', Input::get('single_value'))->lists('id');

Criteria.Bedrooms = 1 and Criteria.Properties = 5 было немного расплывчато, но я добавил это туда, куда они должны идти. Я предполагаю, что вы на самом деле имели в виду id из 1 а также 5 соответственно, поэтому будут получены все критерии, которые имеют спальню с идентификатором 1 и свойством с идентификатором 5.

0

Другие решения

Пытаться Нетерпеливая загрузка отношения

$criterias = Criteria::with('bedrooms', 'properties')
->where('min', '<=', Input::get('single_value'))
->lists('id');
0

По вопросам рекламы [email protected]