php - 在 Yii2 中执行原始 SQL 查询?

标签 php mysql yii2 yii2-advanced-app

我在将 PHP 网站迁移到 Yii2 框架时编写了以下查询。我想将它们添加到我的 Controller 中,以便显示赢得的前 10 个赌注。我已经尝试过许多 Yii2 数据库类,但我无法让它工作。

我的 table 是:

用户:

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
");

最佳答案

你可以像这样执行原始 sql

$connection = Yii::$app->getDb();
$command = $connection->createCommand("
    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' => '1970-01-01']);

$result = $command->queryAll();

我推荐阅读:http://www.yiiframework.com/doc-2.0/yii-db-connection.html#createCommand()-detail

第一个参数是 sql(带有占位符),第二部分是要与占位符一起使用的值数组。

关于php - 在 Yii2 中执行原始 SQL 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30081660/

相关文章:

mysql - 不停机优化MySql 5.7表

MySQL:唯一和索引等价

javascript - 如何使用 yii2 下拉列表隐藏 block

php - Mysql group by 和 Left join 关联表 PHP Yii2

php - Yii2 通过外部表字段和总数进行搜索

php - 如何在工具提示中显示按钮

php - 即使数据库中没有数据也不会显示错误消息

PHP GD imagettftext 字符编码,符号缺失

php - 如果每次请求都使用 mysql Insert slow page 是否会变慢? PHP

php - 从 google chrome 网址中删除特殊字符