2017-08-25 54 views
0

如何從此rawsql構建查詢構建器。如何將rawsql轉換爲查詢構建器

$sql = "SELECT * 
FROM users 
INNER JOIN votes ON user.id = votes.user_id 
WHERE 
    voting_date BETWEEN '$from_date' AND '$to_date'"; 
+0

這個查詢有什麼問題? –

+1

請先嚐試一下。只是要求爲你寫代碼是一個__bad idea__。 –

+0

請告訴我們你到目前爲止嘗試過的方法 – dfour

回答

0

假設你有一個表的用戶,你可以 嘗試這樣的事情;

$query = DB::table('users') 
->join('votes', 'users.id', '=', 'votes.user_id') 
->whereBetween('votes.voting_date', [$from_date, $to_date]) 
->get(); 
+0

謝謝我感謝你的幫助! –

0
$votes = DB::table('users')->join('votes','users.id','=','votes.user_id') 
->whereBetween('voting_date',[$from_date,$to_date])->get(); 

//use db in your controller 
+0

請給出一些對期貨閱讀器有用的解釋 – denny

0

你可以簡單的使用這個

$sql = "SELECT * 
FROM users 
INNER JOIN votes ON user.id = votes.user_id 
WHERE 
    voting_date BETWEEN '$from_date' AND '$to_date'"; 

並執行查詢只需

\DB::select(\DB::raw($sql)); 
0

你應該試試這可能是你的工作:

$rsltUser = DB::table('users')->join('votes','votes.user_id','=','users.id') 
->whereBetween('voting_date',[$from_date,$to_date])->get(); 

希望這項工作爲你!

+0

爲什麼使用Left join而不是inner? – denny

+1

只是建議,請檢查我更新的答案 –

+0

現在看起來好吧,左連接在這種情況下將無法正常工作。 – denny

0

如果你定義的模型User你可以這樣做:

User::whereBetween('voting_date',[$from_date,$to_date]) 
    ->join('votes','users.id','=','votes.user_id') 
    ->get(); 

請將您所定義的模型內部選票的關係更好。例如:

$posts = Post::whereHas('comments', function ($query) { 
    $query->where('content', 'like', 'foo%'); 
})->get();