2017-11-16 17:56:52 1781次浏览 1条回答 0 悬赏 50 金钱

2.0.13版本有出现rule验证报错吗?

['username', 'unique', 'targetClass' => 'rbac\models\User', 'message' => '用户名已存在.']

model tableName

public static function tableName()
    {
        preg_match("/dbname=([^;]+)/i", static::getDb()->dsn, $matches);
        return $matches[1] . '.{{%user}}';
    }

error

SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '{dhw_user.`dhw_user`}}.`username`='admin'))' at line 1The SQL being executed was: SELECT EXISTS(SELECT * FROM dhw_user.`dhw_user` WHERE ({{dhw_user.`dhw_user`}}.`username`='admin'))
补充于 2017-11-17 09:47

修改成这样就可以了:

public static function tableName()
{
    preg_match("/dbname=([^;]+)/i", static::getDb()->dsn, $matches);
    // return $matches[1] . '.{{%user}}';
    return $matches[1] . '.dhw_user';
}

补充:请教如何友好的增加查询语句中表明前增加所属库名;Db.tableName格式

  • 回答于 2017-11-16 18:01 举报

    把你这个换成return 字符串,你看可以吗?

    public static function tableName()
    {
        preg_match("/dbname=([^;]+)/i", static::getDb()->dsn, $matches);
        return $matches[1] . '.{{%user}}';
    }
    
    1 条回复
    回复于 2017-11-17 08:47 回复

    结果就是字符串哈,db.tablename

您需要登录后才可以回答。登录 | 立即注册
晦涩de咚
副董事长

晦涩de咚

注册时间:2015-08-03
最后登录:2020-09-04
在线时长:356小时20分
  • 粉丝36
  • 金钱13598
  • 威望340
  • 积分20558

热门问题