首页 > 解决方案 > 如何在 Laravel 数组中获取指定产品

问题描述

我试图获得那些具有 css 和 html 技术的产品。请注意,(html 和 css)不是唯一可以使用的参数。有时可能更多,例如 ['java','html,'python',。 ..] 等等

在这个结果中,我有 2 个产品,但应该是 1 个,带有 (id:1) 的那个,因为只有这个产品同时具有(html 和 css)技术

[
  {
    "id": 1,
    "title": "First Product",
    "prte": [
      {
        "product_id": 1,
        "technology_id": 1,
        "technology": {
          "id": 1,
          "title_en": "HTML"
        }
      },
      {
        "product_id": 1,
        "technology_id": 2,
        "technology": {
          "id": 2,
          "title_en": "CSS"
        }
      }
    ]
  },
  {
    "id": 2,
    "title": "Second Product",
    "prte": [
      {
        "product_id": 2,
        "technology_id": 1,
        "technology": {
          "id": 1,
          "title_en": "HTML"
        }
      }
    ]
  }
]

这个是控制器

$products = Product::with(['prte' => function ($query){

    $query->with(['technology' => function ($query){
        $query->whereIn('title_en',['HTML','CSS']);
    }]);
 

}])->get();


return view('find',compact('products'));

希望你们能帮助我

标签: phplaravel

解决方案


试试 where 而不是 whereIn。

$products = Product::with(['prte' => function ($query){

     $query->with(['technology' => function ($query){
         $query->where('title_en','HTML')->where('title_en','CSS');
     }]); 

 }])->get();

 return view('find',compact('products'));

推荐阅读