2017-11-18 43 views
1

我使用Laravel爲我的項目,並有一個MySQL表如下比較:多個數據庫行值與Laraval雄辯/ MySQL的

| User_id | technology | years_experience | 
| 1  | PHP  | 4    | 
| 2  | AngularJS | 2    | 
| 1  | HTML  | 2    | 

目前我使用一個標準在那裏查詢,只支持一個標準

Table::where([ 
['technology', '=', 'PHP'], 
['years_experience', '>', 2] 
])->get()->pluck('user_id'); 

如果我想用PHP> 2和HTML> 1檢索所有User_ids,那麼如何通過User_id篩選和分組結果?

回答

0

使用WHERE/AND的問題是它不會比較e行值,但在列中搜索匹配值

「hack」是使用HAVING()。以下是工作解決方案:

Table::groupBy('user_id') 
->havingRaw("sum(tech='PHP' AND experience>=2) > 0") 
->havingRaw("sum(tech='HTML' AND experience>=1) > 0") 
->get() 
->pluck('user_id') 
0

沒有測試過這一點,但最好我想這是你所需要的

Table::where('technology', '=', 'PHP')->andWhere('years_experience', '>', 2)->get()->pluck('user_id')->andWhere('user_id','=',ANYUSERID)->groupBy('user_id')->get(['user_id','technology','years_experience']); 
0

問題是(條件1和條件2)AND(condition3和condition4)

這是怎麼了你可以這樣做:

Table::where(function($query){ 
    $query->where('technology', '=', 'PHP')->where('years_experience', '>', 2); 
})->where(function($query) { 
    $query->where('technology', '=', 'HTML')->where('years_experience', '=', 1); 
})->get()->pluck('user_id'); 
+0

產生0個結果。 還嘗試使用從DB管理器內的toSql()函數生成的SQL – fourzero