我有一个带有表"库存"的mysql数据库(5.7.1)。包含2列:
内容列包含带有多个键的json:
{
"id" : "myId",
"arrayOfEl" : [
{id : "1", always : true},
{id : "1", always : true}
]
}
我尝试在laravel中进行查询,只从指定id的内容列中获取arrayOfEl键:
$inventory = Inventory::where('id', "myId")->get(????);
如何知道查询中的指定位置只能获得响应中的子列arrayOfEl?
答案 0 :(得分:0)
除非您的表格为json
类型,否则您可能需要获取整行,然后尝试过滤它们。确保在模型上定义属性强制转换,例如使用集合
protected $casts = [
'arrayOfEl' => 'collection',
];
然后尝试找到匹配
$myId = 'myId'; // id of content
$inventory = Inventory::all()->filter(function ($item) use ($myId) {
return is_object($item->content) && $item->content->id == $myId;
})->first();
或者如果您有json
类型列。您只需根据->
表示法对其进行过滤即可。
->where('content->id', 'myId')
答案 1 :(得分:0)
您可以使用pluck
仅获取所需的列。
$inventory = Inventory::where('id', 'myId')->pluck('arrayOfEl');