各位大牛,大神,做个日志系统,想根据日期查询数据库里的表,数据库每天都会生成一个日志表,请教下如何查询表数据
假设你的日志模型类是MyLog
坐等大神,学习看看
查询条件加上日期等于某一天,不就行了?
这种情况直接DAO 不就好了,或者做成 动态Model , log_201701xx 这种
各位大牛,大神,做个日志系统,想根据日期查询数据库里的表,数据库每天都会生成一个日志表,请教下如何查询表数据
假设你的日志模型类是MyLog
坐等大神,学习看看
查询条件加上日期等于某一天,不就行了?
这种情况直接DAO 不就好了,或者做成 动态Model , log_201701xx 这种
谁有精确到秒的日期插件,有文档更好
yii2-widget-datetimepicker,挺好用的,可以试试.有问题可以@我
Git链接
请问 model里面的 hasOne 该怎么缓存?
可以用缓存,类似下面方法:
记得取出来了要塞到缓存里,这样下次才有缓存
relation 不是直接系统默认缓存的吗? 我记得是只访问数据库一次,之后就缓存了的。
可以看看Yii2缓存文档,里面有专门针对SQL的缓存,用到你这个应该是可以的
D:\phpwork\news\controllers\SiteController.php
public function actionRegister()
{
$model = new RegisterForm();
if ($model->load(Yii::$app->request->post())) {
if (Yii::$app->request->isAjax) {
Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
$result=\yii\widgets\ActiveForm::validate($model);
return $result;
}
if($model->validate()){
$error=$model->save();
if($error) {
return $this->errorDisplay($error);
}else{
Yii::$app->session->setFlash('success');
return $this->refresh();
}
}else{
return $this->errorDisplay($model->getErrors());
}
}else{
return $this->render('register', [
'model' => $model,
]);
}
}
D:\phpwork\news\models\RegisterForm.php
['verifyCode', 'captcha', 'captchaAction'=>'site/captcha'],
报错信息:
The verification code is incorrect.
个人感觉是下面这段Ajax验证代码运行后,verifyCode就被自动刷新了:
if (Yii::$app->request->isAjax) {
Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
$result=\yii\widgets\ActiveForm::validate($model);
return $result;
}
请问大神们是怎么解决的这个问题?谢谢
` use yii\captcha\CaptchaAction;
[‘verifyCode’, ‘captcha’,’message’=>’验证码不正确’],
而不是这么写的
[‘verifyCode’, ‘captcha’, ‘captchaAction’=>’site/captcha’],
我将rules的规则[ 'coder','captcha', 'captchaAction'=>'coder/captcha','message'=>"{attribute}错误"]
给删除了,已经用ajax验证,就不进行再次验证了,直接提交表单的时候就可以通过了。
通过composer 命令:composer require “phpoffice/phpexcel” 已经把phpexcel引入了,目录如下:
现在问题是我在控制器中 new PHPexcel()时 会报 ‘PHPExcel’ not found 。 问: 我该如何才能use它?
use PHPExcel;
use PHPExcel_IOFactory;
先use进来。。才可以new。。。先找到女朋友,你才能 想干的事情
new \PHPexcel()
用composer装,自动载入是composer帮你实现的,使用的时候直接new,记得加上反斜杠
或者先导入也行
项目里批量删除时action没有运行,单个删除就没问题,看代码是controller类里的beforeAction函数返回false导致没有继续运行,找下去发现是isValid的属性被改变,但我找不到在哪里改变的,为什么会这样
isValid是yii\base\ActionEvent里面的一个属性,用来控action是否继续执行的,如果这个isValid为false,则不往下执行,
一般问题出在,behaviors这个方法里面,所以好好检查你的behaviors方法里面的验证,isValid的一般会在这个方法里面赋值;
源码参考:yii\base\ActionFilter(一般controller里面的behaviors类会继承这个类,并且实现beforeAction(),这个方法,由源码可以知道,当具体某个behaviors类的beforeAction()返回值为false的话,那么isValid会被赋值false,那么action就不会执行)
总结一下,就是查看behaviors里面的每个类的beforeAction方法,看看哪个类的这个方法返回值为false,那么就是问题的所在
循环调用了吧?估计是被浏览器停止掉了
如题,请问rbac怎么实现?有没有简单的教程
$query_ol = Orderlist::find()->where([
'status' => Orderlist::STATUS_ACTIVE,
'phone' => \Yii::$app->user->identity->username,
]);
$query_ol->andWhere(['<', 'addtime', time()]);
$query_ol->andWhere(['>=', 'addtime', ':addtime1']);
if($query_ol->andWhere([':addtime1'=>strtotime("-1 month")])->count()>=4){
echo 'hello';
}
报错提示如下:
Database Exception – yii\db\Exception
SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens
The SQL being executed was: SELECT COUNT(*) FROM so_orderlist
WHERE (((status
=’1′) AND (phone
=’18663697137′)) AND (addtime
< 1493111483)) AND (addtime
>= ‘:addtime1’)
Error Info: Array
(
[0] => HY093
[1] => 0
)
你打印过最后执行的sql吗 看看是否你那个占位符到底是否好用了
多加一句,我记得andwhere是可以加params, 可以用下面2种方法,简化一行代码。
$query_ol->andWhere(‘addtime>=:addtime1’, [‘:addtime1’=>strtotime(“-1 month”)]);
$query_ol->andWhere([‘>=’, ‘addtime’, strtotime(“-1 month”)]);
在gridview里面,我自己加入了daterangepicker,每一次点击apply的时候,都能把时间放入input里面,但是,搜索却失败。。。
你是要搜索吗?
我是这样做的。不知道你是不是要这个!
<?=$this->render(‘_search’, [‘model’ => $searchModel]); ?> 这是(index.php)
(_search.php)
<?php $form = ActiveForm::begin([‘action’ => [‘index’],’method’ => ‘get’,]); ?>
<?= $form->field($model, ‘type_id’)->dropDownList(ArrayHelper::map($data,’id’, ‘type_name’),[‘style’ => ‘display:inline-block;’,’prompt’=>’请选择活动类别…’])->label(false) ?>
场景:
游戏项目,用户进行任何操作,都会触发一个“更新”(包含了最后操作时间、资源、进程等)。
Update
任务,这个类应该放在哪个文件夹?Update
,目测可以省几十行重复代码。写一个公共的Controller类,你所用到的所有Controller都继承他,然后在这个类的beforeAction里面调用你自定义的Update方法