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

Как отфильтровать сущности в Laravel по значению pivot столбца?

Добрый день. Есть сущности item и property, между ними реализована связь многие ко многим с дополнительной pivot (не знаю, как правильно перевести на русский) колонкой value - значение property для item. Как составить запрос через laravel'овский ORM, чтобы получить все item у которых значение property равно искомому? Заранее спасибо.
Пример:
items:
id | name
1  | a
2  | b
properties:
id | name
1  | c
2  | d
item_property:
item_id | property_id | value
1       | 1           | искомое
 Нужно получить все item, у которых для property 'c' значение 'искомое'
  • Вопрос задан
  • 230 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 2
@jazzus
В модели property к отношению items()

public function filterItems($value)
  {
    return $this->items()->wherePivot('value', $value);
  }

и затем в контроллере
$value = 1;
$items = Property::find(5)->filterItems($value)->get();
Ответ написан
Комментировать
@anlamas
$items = Item::query()
    ->whereHas('properties', function($query) {
        $query->where('item_property.value', 5);
    })
    ->get();
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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