如何使用Laravel 5.5

时间:2019-02-09 00:18:37

标签: php laravel

这是数据库中的json对象

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

我的问题是如何通过给定角色过滤特定的price_role并将其转换为对象而不是返回列表?

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

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

如果$role = "HQ"的预期输出:

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

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

2 个答案:

答案 0 :(得分:2)

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

您可以试试吗?

答案 1 :(得分:0)

您忘记了使用get()方法获得所有结果。

您的请求应如下所示:

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