繁体   English   中英

Laravel 5.4查询构建器和MySQL函数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM