[英]Laravel 5.4 query builder and MySQL functions
我正在使用Laravel查询构建器构建查询,我遇到了MySQL函数的问题。
我有一个Mysql函数接收user_id
和一些其他参数来计算用户的分数。 此查询必须仅返回分数高于特定值的用户。 查询是巨大的,所以我只粘贴导致麻烦的部分:
$query = $query->where(DB::raw($fstr.' >= 70'));
生成这个:
AND f_user_matching_score(4, admin__user.id_user, 1, 0, 0, 0, 0, ',') >= 70 IS NULL
这个:
$query = $query->where($fstr,'>=', 70));
生成这个:
AND `f_user_matching_score(4, admin__user.id_user, 1, 0, 0, 0, 0, ',')` >= 70
两者都无效。 第一个是添加这个IS NULL
,第二个是后面的滴答。
我怎么解决这个问题?
您需要使用whereRaw()
完全原始查询。 这样它就不会期望传入任何其他变量,尽管你可以在需要的时候传入。
$query->whereRaw($fstr.' >= 70');
如果您需要传入变量以进行引用,那么您只需将它们作为数组传递:
$query->whereRaw("f_user_matching_score(?, admin__user.id_user, ?, ?, ?, 0, 0, ?) >= 70", [4, 1, 0, 0, ',']);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.