所以我在表settings
中有一个名为companies
的json列(其中有一个名为Company
的Laravel模型)。该列可能包含也可能不包含名为business_key
的对象。我尝试只返回包含此对象的公司。
我的查询如下:
$owners = \Company::where('settings->business_key')->get();
我不知道怎么做这样的工作。我没有找到任何特定的Laravel。 感谢您的时间和帮助!
答案 0 :(得分:3)
假设您将该字段作为数组投射到模型中,您可以将其视为其他幼虫字段,因此您的查询将是:
$owners = \Company::whereNotNull('settings->business_key')->get();
答案 1 :(得分:0)
试试这个,
$data = \Company::whereNotNull('setting')->get();
如果setting
列不包含任何对象,则值为NULL
,然后上面的查询会为setting
列中的所有记录提供对象。请参阅文档here
答案 2 :(得分:0)
为了检索所有非空数据,可以尝试以下操作:
$owners = \Company::whereRaw('JSON_EXTRACT(settings, "$.business_key") <> CAST("null" AS JSON)')->get();