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 ...''''。 –