我有一个mysql数据库(MySQL 5.7.1)
,其中包含一个名为" 库存 "的表格。该表包含2列:
因此,我表中的每个条目都包含一个json数据,定义如下:
{
testId : "4",
lang : "en",
subTask : {
inv : {
hasright : true,
isNew : false
}
}
}
在我的库存模型类中,我定义了:
protected $casts = [
'dataInv' => 'array',
];
在我的InventoryController中,我定义了一个方法来获取" inv"给定parentId的结构:
public function getInventoryByParentId($parentId) {
$inventory = Inventory::where('parentId', $parentId)->first();
return response()->json($inventory);
}
此函数工作正常,但将整个结构作为json返回。例如,对于parentId:4:
{
parentId : 4,
dataInv : {
{
testId : "4",
lang : "en",
subTask : {
inv : {
hasright : true,
isNew : false
}
}
}
}
}
但我想只检索subJson" inv" :
inv : {
hasright : true,
isNew : false
}
我只能检索这个json' inv'通过在第一个请求中直接制作过滤器? :
$inventory = Inventory::where('parentId', $parentId)->first();
答案 0 :(得分:0)
如果您想要不同的结果,您应该更改返回的内容:
Inventory
修改强>
如果您想要更好地构建它,请在public function getSubTaskAttribute() {
return $this->dataInv['subTask'];
}
模型中创建一个subTask方法:
public function getInventoryByParentId($parentId) {
$inventory = Inventory::where('parentId', $parentId)->first();
return response()->json($inventory->sub_task);
}
因为您可以在方法中更轻松地检索它:
DateTime DateofBirth = DateTime.Now;
if (DateofBirth .ToString() == null || DateofBirth .ToString() ==string.Empty)
{
// do something
}