Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 22.08.2017 13:05:20

whereHas вместе с with

Добрый день.
Делаю такой запрос

PHP
Attribute::whereHas('values', function($q) use($product){
                
$q->whereHas('combinations', function($q) use($product) {
                    
$q->whereIn('product_attribute_id'$product->variations->pluck('id')->all());
                });
            })->
get();

Он возвращает только аттрибуты. А как сделать что бы он вернул атрибуты и связь combinations?
Связи выглядят так:
Attribute hasMany Values, Values belongsToMany Combinations

Не в сети

#2 22.08.2017 13:22:12

Re: whereHas вместе с with

Нашел способ

PHP
Attribute::whereHas('values', function($q) use($variations){
                
$q->whereHas('combinations', function($q) use($variations) {
                    
$q->whereIn('product_attribute_id'$variations);
                });
            })->
with(['values' => function($q) use($variations){
                
$q->whereHas('combinations', function($q) use($variations) {
                    
$q->whereIn('product_attribute_id'$variations);
                });
            }])->
get()

Но этот способ делает 2 больших запроса…

Не в сети

#3 22.08.2017 13:35:51

Re: whereHas вместе с with

Код во втором сообщении делает не то, что написано в первом. Ты говоришь, что хочешь связь combinations, а загружаешь values. Запости полностью рабочий код и уточни что действительно нужно загрузить и тогда, возможно, получится оптимизировать запросы.

Изменено AlexeyMezenin (22.08.2017 13:36:21)

Не в сети

#4 23.08.2017 08:27:25

Re: whereHas вместе с with

  1. Код во втором сообщении делает не то, что написано в первом

Да, я не правильно объяснил. Извиняюсь.
Надо что бы запрос вернул атрибуты и их значения (values) у которых $q->whereIn('product_attribute_id', $product->variations->pluck('id')->all());. Тоесть согласно этому запросу вернуть атрибуты и их значения

Не в сети

#5 24.08.2017 00:14:31

TrueKanonir
Откуда: Ташкент
Сообщений: 221

Re: whereHas вместе с with

  1. Но этот способ делает 2 больших запроса…

Ну это нормально. Иначе сдесь никак не аделать. Ток менять структуру бд

Не в сети

Подвал раздела