簡體   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