查询json列时遇到问题。
以前我的代码是
$query->whereIn('user', $users);
现在我已经将db type更改为json列,并尝试修改新版本的代码。
在原始mysql中,这是有效的
JSON_CONTAINS(user, '"tom","Bill"')
但当我把它放在eloquent/php中时,它总是失败或不返回任何东西。在这里,我传递了一个用户数组,前面使用了一个在原始sql中工作的where
$leads->whereRaw("JSON_CONTAINS(user, '"$users"')")
你知道如何让它在laravel中工作吗?这样我就可以传入一个字符串数组,在json列中查询它们,json列也包含一个字符串数组。
我的json列有这样的数据
["Paul", "Tom", "Bob"]
2条答案
按热度按时间rqcrx0a61#
mysql需要一个json字符串:
在laravel 5.6.24中,您可以使用
whereJsonContains()
:mrwjdhj32#
如果
$users
是一个名称数组,那么您应该对它进行迭代并添加orWhereRaw
条件,请注意orwhereraw可以接受参数数组: