这是数据库中的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
答案 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();