代码之家  ›  专栏  ›  技术社区  ›  digit

如何使用laravel 5.5过滤数组中的嵌套对象

  •  0
  • digit  · 技术社区  · 5 年前

    这是数据库中的JSON对象

    {
      "id": 1,
      "price_role": [
         {"id": 1, price:20, role:"HQ"},
         {"id": 2, price:10, role:"AG"}
       ]
    }
    

    我的问题是如何按给定的角色筛选特定的价格角色,并将其转换为对象而不是返回列表?

    尝试使用这种方法,但不起作用:

    $role = "HQ"; 
    $query = Product::with('price_role',  function ($q) use ($role) {
          $q->where('role', '=', $role);
      })
      ->where('user_id', '=', $user->id)->get();
    

    预期输出if $role = "HQ" :

     {
      "id": 1,
      "price_role": {"id": 1, price:20, role:"HQ"},
     }
    

    仅供参考:我正在使用Laravel 5.5

    2 回复  |  直到 5 年前
        1
  •  2
  •   MONSTEEEER    5 年前
    $role = "HQ"; 
    $query = Product::with(['price_role' => function ($q) use ($role) {
         $q->where('role', '=', $role);
    }])
    ->where('user_id', '=', $user->id)->get();
    

        2
  •  0
  •   CodeBoyCode Albino Vaz    5 年前

    get()

    $query = Product::with('price_role',  function ($q) use ($role) {
        $q->where('role', '=', $role);
     })->where('user_id', '=', $user->id)->get();