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