Jeen

Jeen

难得糊涂

  • 财富值1120
  • 威望值190
  • 总积分3200

个人信息

  • 不太清楚你的使用场景,建议多结合自己项目的业务场景+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 ?

    检查看看,命名空间与目录结构对应, 或者把项目结构和源码截图看看

  • 回答了问题 RBAC

    首先,从思想上不要把RBAC想的太神秘。

    说白了,它其实就是类似,你有某个锁的钥匙,然后你才能打开它,一样的道理。

    RBAC文档样例中的 createPost 也是一个钥匙。至于锁要放在哪边,就看你的业务逻辑了,可以只用一次 也可以多个地方用一个锁。

    由于常见的业务都跟 用户 和 控制器 相关,所以我们才会习惯性的把 控制器路由的路径(比如 /module/controller/action 之类的) 设置为钥匙(权限名称)。
    这样,当你访问某个控制器时,没钥匙,就会提示权限不足。

    建议多结合框架进行测试,验证之后 心里就有底了 ;)

  • 建议查下 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);
    
  • 回复了 的回答

    createToken方法贴出来

    框架内似乎没有类似封装好的场景工具, 业务逻辑层面的大部分还得靠自己写

  • language 和 sourceLanguage 打印看看是不是一样的
    如果是一样的,默认是不会翻译的, 或者设置另外一个 forceTranslation 看看

  • 回复了 的回答

    createToken方法贴出来

    噢噢 忘了是,密码找回的 页面了 哈哈。
    那其实你也不用担心 js 会被恶意篡改啊, adminuser 和 token 是需要绑定验证的, 不是么?
    同理, 访问 密码修改页的 各个get参数都需要写到 ajax提交请求的URL里面

总监 等级规则
3200/5000
资料完整度
50/100
用户活跃度
0/100

Ta的关注

0

Ta的粉丝

9

Ta的访客

42