Jeen
- Jeen 回答了问题 用ar查询可以指定优先级吗
不太清楚你的使用场景,建议多结合自己项目的业务场景+yii2debug插件 或者 自行使用
getRawSql
方法进行调试这边提供一小段测试代码(其中的表名及字段名均无实际意义)
$query = new \yii\db\Query(); $sql1 = $query->from('test_table')->where([ 'OR', ['col1' => [1,2,3]], [ 'AND', ['col2' => 3], ['like', 'col3', 'defg'], ] ])->createCommand()->getRawSql(); var_dump($sql1); $sql2 = $query->from('test_table')->where([ 'in', 'col1', [1,2,3] ])->orWhere([ 'AND', ['col2' => 3], ['like', 'col3', 'defg'], ])->createCommand()->getRawSql(); var_dump($sql2);
执行结果
#sql1 SELECT * FROM `test_table` WHERE (`col1` IN (1, 2, 3)) OR ((`col2`=3) AND (`col3` LIKE '%defg%')) #sql2 SELECT * FROM `test_table` WHERE (`col1` IN (1, 2, 3)) OR ((`col2`=3) AND (`col3` LIKE '%defg%'))
顺便提下就是 AR查询条件的默认优先级,其实这个并没有所谓的默认优先级。查询条件的组合,取决于你的使用顺序。
转义之后,展示页面内容时 也需要转义回来, 所以基本上不起作用。
要防止xss攻击的话,建议过滤一些特定标签 script 之类的
LoginController的命名空间 拼写错误?
app \ mudule \ admin \ controllers 不是 module 或 modules ?
检查看看,命名空间与目录结构对应, 或者把项目结构和源码截图看看
- Jeen 回答了问题 Yii 是否有什么办法可以是页面操作数据库的字段
建议查下 migrate 相关的资料,可以实现你说的需求
/** @var \yii\db\Migration $migrate */ $migrate = new Migration([ 'db' => 'db_test',//用来做测试的库, 不设置则为默认db ]); //针对mysql的table设置 $tableOptions = 'CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE=InnoDB'; //这边以创建数据表做测试, migrate 支持数据表的各类操作 $result = $migrate->createTable('test_tb',[ 'id' => $migrate->primaryKey(), 'email' => $migrate->string(255)->notNull()->unique(), //表字段 可根据前端设置 转换后生成 ],$tableOptions); VarDumper::export($result);//这边是null
测试之后,你会发现,这个类通常是用在命令行里面的。
你可以尝试写一个继承的 数据库操作类
主从数据同步,是可以从 数据库层面解决的,不需要依赖框架写在代码里面。
建议搜索下 数据库主从配置 的相关资料看看
VarDumper
如:
\yii\helpers\VarDumper::dump(\Yii::$app, 10, true);
- Jeen 回答了问题 yii2语言包存放位置无法自定义问题
language 和 sourceLanguage 打印看看是不是一样的
如果是一样的,默认是不会翻译的, 或者设置另外一个 forceTranslation 看看 createToken方法贴出来
@xiaochuanworld 噢噢 忘了是,密码找回的 页面了 哈哈。
那其实你也不用担心 js 会被恶意篡改啊, adminuser 和 token 是需要绑定验证的, 不是么?
同理, 访问 密码修改页的 各个get参数都需要写到 ajax提交请求的URL里面