Laravel json列查询以检查对象是否存在

时间:2017-07-03 16:56:48

标签: json laravel

所以我在表settings中有一个名为companies的json列(其中有一个名为Company的Laravel模型)。该列可能包含也可能不包含名为business_key的对象。我尝试只返回包含此对象的公司。 我的查询如下:

$owners = \Company::where('settings->business_key')->get();

我不知道怎么做这样的工作。我没有找到任何特定的Laravel。 感谢您的时间和帮助!

3 个答案:

答案 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();