在查询编译器laravel中将数据库列值转换为数组并使用wherein

rjee0c15  于 2023-03-31  发布在  其他
关注(0)|答案(1)|浏览(91)
$to_email=Permission::where('price_list',$request->input('price_list')) 
->where('level_one','1')
->whereIn($request ->input('customer_id'),array('permissions.customer_id'))
->join('users', 'users.id', '=', 'permissions.user_id')
->select('users.fname','users.lname','users.email')
->first();

我尝试使用whereIn,其中数据库列包含内爆数据即(1,2,3),如下面的image

所示的customer_id数据
如何使用WhereIn或查询,例如如果客户ID是2,则选择2在customer_id中的位置,并仅返回customer_id中存在2的数据

yebdmbv4

yebdmbv41#

如果$request->input('customer_id')是一个整数,列customer_idstring,添加到查询:

->where('customer_id', 'LIKE', '%'.$request->input('customer_id').'%')

而不是

->whereIn($request->input('customer_id'),array('permissions.customer_id'))

编辑:这个解决方案将得到所有id为12,20,200 ...的记录(每个包含2的数字)。
为了防止这种情况,您可以在将customer_id存储到数据库之前,在其开头和结尾添加,(逗号)(您的第一行的customer_id将是",1,2,")。

->where('customer_id', 'LIKE', '%,'.$request->input('customer_id').',%')`
//added comma next to % sign

最佳实践解决方案可能是使用多对多关系,更多信息请点击此处

相关问题