Laravel - многие отношения ограничивают рвение - PullRequest
0 голосов
/ 19 марта 2019

Отношение ко многим ко многим ограничивает

таблица: Продукты Код товара Категория

Таблица: Особенности Feature_id: 11 Имя_функции: удаленный

Сводная таблица: FeatureProduct Feature_id PRODUCT_ID

$products = App\Product::with([‘features' => function ($query) {
    $query->where(‘id’, 11);
}])->where(‘category_id’, 17)->get();

Все равно получите все товары с категорией = 11, а не отфильтруйте feature_id = 11

the: с предложением Query where, я не знаю, что мне поставить, это идентификатор принадлежит функции.

Вот как выводится один продукт

Product {#1372 ▼
  #original: array:13 [▼
    "id" => 1
    "code" => "PL6881"
    "v_description" => "E14 41 bóng + LED pha lê 642 hạt"
    "width" => 1200
    "length" => null
    "height" => 1800
    "price" => 47800000
    "vendor_id" => 1
    "category_id" => 17
    "active" => 1
    "discount" => 0
    "hero" => 0
    "promote" => 0
  ]
  #relations: array:1 [▼
    "features" => Collection {#5858 ▼
      #items: array:3 [▼
        0 => Feature {#3149 ▼
          #attributes: array:4 [▼
            "id" => 3
            "code" => "Chau Au"
            "v_description" => "Châu Âu"
            "att_cate_id" => 1
          ]
        }
        1 => Feature {#3340 ▶}
        2 => Feature {#3492 ▶}
      ]
    }
  ]

}

Ответы [ 2 ]

0 голосов
/ 19 марта 2019

Я действительно нашел это полезным

$products = Product::with('features')->whereHas('features', function ($query) {
    return $query->where('id', 3);
})->where('category_id',17)->get();
0 голосов
/ 19 марта 2019

Попробуйте следующий код,

$products = App\Product::with([‘features'])
->whereHas(‘features', function ($query) {
   $query->where(‘id’, 11);
})->where(‘category_id’, 17)->get();

Я отредактировал ответ.пожалуйста, проверьте сейчас

...