Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于检查对象是否存在的Laravel json列查询_Json_Laravel - Fatal编程技术网

用于检查对象是否存在的Laravel json列查询

用于检查对象是否存在的Laravel json列查询,json,laravel,Json,Laravel,因此,我在表companys中有一个名为settings的json列(它有一个名为Company的Laravel模型)。该列可能包含也可能不包含名为business\u key的对象。我尝试只返回包含此对象的公司。 我的查询如下所示: $owners = \Company::where('settings->business_key')->get(); 我不知道怎样才能让这样的事情成功。我没有发现拉雷维尔对此有什么特别之处。 谢谢你的时间和帮助 假设您在模型中将字段强制转换为数组,

因此,我在表
companys
中有一个名为
settings
的json列(它有一个名为
Company
的Laravel模型)。该列可能包含也可能不包含名为
business\u key
的对象。我尝试只返回包含此对象的公司。 我的查询如下所示:

$owners = \Company::where('settings->business_key')->get();
我不知道怎样才能让这样的事情成功。我没有发现拉雷维尔对此有什么特别之处。
谢谢你的时间和帮助

假设您在模型中将字段强制转换为数组,您可以将其视为其他幼虫字段,因此您的查询将是:

$owners = \Company::whereNotNull('settings->business_key')->get();
试试这个

$data = \Company::whereNotNull('setting')->get();

如果
setting
列不包含任何对象,则值将为
NULL
,然后上述查询将给出
setting
列中包含对象的所有记录。请参见“检索所有非空数据的目的”中的文档,您可以尝试以下操作:

$owners=\Company::whereRaw('JSON_EXTRACT(settings,“$.business_key”)CAST(“null”为JSON)->get();

如果该列没有默认值,则在没有业务密钥的情况下该列将为空。所以,用NOTNULL business keyHey检索所有列嘿,我也有一个问题,在我的例子中,我有一个JSON角色数组,比如[“用户”、“管理员”、“客户”]在这个例子中,如果用户是管理员,我如何为其执行where子句呢?所以我找到了一个简单的模型::whereJsonContains[“角色”,“用户”]修复了它…耶!