我将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) 什么是yii2中textarea的映射?如何用yii2格式写这个?
<textarea name="downloadSourceCode" id="downloadSourceCode"></textarea>
Run Code Online (Sandbox Code Playgroud)
什么是在yii2中定义textarea的替代方法或方法?
以下这个问题我将我的休息控制器行为设置为
public function behaviors()
{
$behaviors = parent::behaviors();
$auth= $behaviors['authenticator'] = [
'class' => HttpBearerAuth::className(),
'only' => ['dashboard'],
];
$behaviors['contentNegotiator'] = [
'class' => ContentNegotiator::className(),
'formats' => [
'application/json' => Response::FORMAT_JSON,
],
];
$acces=$behaviors['access'] = [
'class' => AccessControl::className(),
'only' => ['login'],
'rules' => [
[
'actions' => ['login'],
'allow' => true,
'roles' => ['?'],
],
],
];
unset($behaviors['authenticator']);
unset($behaviors['access']);
Run Code Online (Sandbox Code Playgroud)
现在,cors过滤器
// add CORS filter
$behaviors['corsFilter'] = [
'class' => \yii\filters\Cors::className(),
'cors' => [
// restrict access to …Run Code Online (Sandbox Code Playgroud) 我已多次阅读Yii2文档.我也谷歌搜索,我找不到任何有用的东西.
问题是我不了解环境文件夹的概念.请让我解释一下:
为什么我必须复制环境/ dev和environment/prod中的所有控制器,视图和其他文件?
我实际上要在哪些文件夹中进行开发?
环境文件夹的部署过程是什么?我每次将更改推送到生产服务器后都应该调用init吗?
我在哪里可以在全球范围内设置语言(基于用户的cookie)?如何使它在整个应用程序(控制器,视图等)中工作?
在我找到的文档中 \Yii::$app->language = '';,我可以编写逻辑以正确的方式更改语言?
在默认导航栏上进行了一些简单的编辑之后,我得到了下面菜单的代码......如果我添加更多菜单会非常难看.
<?php
NavBar::begin([
'brandLabel' => 'My Project',
'brandUrl' => Yii::$app->homeUrl,
'options' => [
'class' => 'navbar-inverse navbar-fixed-top',
],
]);
$menuItems = [
['label' => 'Home', 'url' => ['/site/index']],
['label' => 'Contact', 'url' => ['/site/contact'],'visible'=>false],
];
if (Yii::$app->user->isGuest) {
$menuItems[] = ['label' => 'Signup', 'url' => ['/site/signup']];
$menuItems[] = ['label' => 'Login', 'url' => ['/site/login']];
} else {
if(yii::$app->user->can('admin')){
$menuItems[] = ['label' => 'Users', 'url' => ['/users']];
}
$menuItems[] = ['label' => 'BUB Sub Projects', 'url' => ['/bub']];
$menuItems[] = ['label' …Run Code Online (Sandbox Code Playgroud) 嗨,大家好我正在使用以下代码,并limit没有工作,但如果我看到的命令比它显示limit在那,但当我将查询传递给ActiveDataProvider它获取所有记录
$data= User::find()->where(['category_id'=> 5])->orderBy(['rand()' => SORT_DESC])->limit(4);
$command = $data->createCommand();
$data2 = $command->queryAll();// This works fine and fetch only 4 data
$dataProvider = new ActiveDataProvider([
'query' => $data,
]); // But this displays all data without limit
Run Code Online (Sandbox Code Playgroud)
我在这做什么错了???
我想在Yii2下拉列表中显示所选值,
$ _GET价值:
$id = $_GET["cid"];
Run Code Online (Sandbox Code Playgroud)
下拉代码
$form->field($model, 'userid')
->dropDownList(
[User::getUser()],
//[ArrayHelper::map(User::findAll(['active' => '1']), 'id', 'name')],
['prompt'=>'Select a user','id'=>'user_dropdown'],
['options' =>
[
$id => ['selected' => true]
]
]
)->label('');
Run Code Online (Sandbox Code Playgroud)
但这种方法不起作用!
我正在尝试将响应数组转换为JSON格式.我已经尝试了在SO和其他网站上发布的所有答案,如web1,web2添加header('Content-Type: application/json'),然后echo json_encode($data,JSON_PRETTY_PRINT);
我总是以文本格式获得输出.有人可以帮助我解决这个问题.
助手班级:
public static function renderJSON($data) {
header('Content-Type: application/json');
echo json_encode($data,JSON_PRETTY_PRINT);
}
Run Code Online (Sandbox Code Playgroud)
我的控制器:
if ($model->login()) {
$user = User::findByUsernameOrEmail($request->post('username'));
$userArray = ArrayHelper::toArray($user);
Helpers::renderJSON($userArray);
Run Code Online (Sandbox Code Playgroud)
我试着打印userArray它看起来像这样:
Array
(
[name] => abc
[lastname] => xyz
[username] => test_test
)
Run Code Online (Sandbox Code Playgroud)
Json输出:(html/text)
{
"name": "abc",
"lastname": "xyz",
"username": "test_test"
}
Run Code Online (Sandbox Code Playgroud) 我有模块ticket.
模块类有propery UserClassName(字符串).
在这个模块中,我有一个模型叫Dialog.
在这个模型中,我想要访问模块属性UserClassName.
我如何从我的模型中获取模块对象Dialog?
PS从控制器我可以做下一步:$this->module.