25
當我將我的PHP網站遷移到Yii2框架時,我寫了下面的查詢。我想將它們添加到我的控制器中,以顯示贏得的前10個賭注。我嘗試過很多Yii2數據庫類,但是我無法實現它。在Yii2中執行原始SQL查詢?
我的表是:
用戶:
id | user_name | user_status | ...other columns...
賭注:
id | user_id | date_time |...other columns...| balance_return
我想在Yii2得到的查詢是:
$query_all = $dbh->query("
SELECT SUM(bets.balance_return) AS total_win
, bets.user_id
, users.user_name
, users.user_status
FROM bets INNER JOIN users ON bets.user_id = users.id
WHERE users.user_status = 'verified'
AND bets.date_time > " . $start_date . "
GROUP BY bets.user_id
ORDER BY total_win DESC
");
變量start_date是我按照time()
計算的一個6個月的週期也請注意,balance_return
是每贏一個用戶所以它的總和決定了排名。
第二個查詢是:
$qwi = $dbh->query("
SELECT SUM(bets.balance_return) AS total_win
, bets.user_id
, users.user_name
, users.user_status
FROM bets INNER JOIN users ON bets.user_id = users.id
WHERE users.user_status = 'verified'
AND bets.date_time > " . $start_date . "
GROUP BY bets.user_id
ORDER BY total_win DESC LIMIT 0,10
");
非常感謝你回答這個問題。我在卡住了兩天之後才設法讓它工作。另外我想說明的是,當我從模塊控制器調用'$ connection = Yii :: $ app-> getDb();'時,我收到一個錯誤,我不得不調用'$ connection = \ Yii :: $ app-> getDb();'爲什麼會這樣? –
錯誤是由於命名空間。如果你想在沒有斜槓的情況下使用'Yii',你必須在類的頂部添加'use Yii;'。 – jagsler
作爲一種最佳實踐,我習慣於在Yii對象內嵌的任何位置使用'''Yii :: $ app ...''''。 –