我将PHP网站迁移到Yii2框架时编写了以下查询.我想将它们添加到我的控制器中,以显示赢得的前10个投注.我尝试过很多Yii2数据库类,但我无法让它工作.
我的表是:
用户:
id | user_name | user_status | ...other columns...
Run Code Online (Sandbox Code Playgroud)
投注:
id | user_id | date_time |...other columns...| balance_return
Run Code Online (Sandbox Code Playgroud)
我希望在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
");
Run Code Online (Sandbox Code Playgroud)
变量start_date是我计算的6个月的时间段.time()另请注意,balance_return用户获得的每次获胜都是如此,其总和决定了排名.
第二个查询是:
$qwi = $dbh->query("
SELECT SUM(bets.balance_return) AS total_win
, bets.user_id
, users.user_name …Run Code Online (Sandbox Code Playgroud) 目前我在我的api模块上使用以下初始化代码
public function init()
{
parent::init();
Yii::$app->response->format = Response::FORMAT_JSON;
}
Run Code Online (Sandbox Code Playgroud)
我的api在以下示例中以XML格式返回响应.
public function actionTest()
{
$items = ['one', 'two', 'three' => ['a', 'b', 'c']];
return $items;
}
Run Code Online (Sandbox Code Playgroud)
这是回应:
<response>
<item>one</item>
<item>two</item>
<three>
<item>a</item>
<item>b</item>
<item>c</item>
</three>
</response>
Run Code Online (Sandbox Code Playgroud)
我能让它工作的唯一方法是将这一行添加到每个控制器行为中.我已经阅读了文档,其中说我可以在模块类中进行此操作,因此我不需要在每个控制器中执行此操作.我不知道为什么它会提供XML.也,万一唯一的方法是将它添加到我的行为中,我是否必须编写代码来处理名称,代码,状态,类型,以前的代码或者Yii提供yii\rest\Controller和yii\rest\ActiveController哪个自动处理这个.很明显,当出现错误时,它们会自动输出.
{"name":"Not Found"
"message":"Page not found.",
"code":0,
"status":404
"type":"yii\\web\\NotFoundHttpException"
"previous":{"name":"Invalid Route","message":"Unable to resolve the request: api/home/",
"code":0,"type":"yii\\base\\InvalidRouteException"
}
}
Run Code Online (Sandbox Code Playgroud)