如何在Yii框架中解决CDb连接中的错误

时间:2019-07-16 07:07:56

标签: mysql yii connection

尝试登录Yii主页时出现错误

这是错误说明

CDbCommand在SQL-запрос中:SQLSTATE [42000]:语法错误或访问冲突:1064您的SQL语法中有一个错误;您可能会遇到错误。检查与您的MariaDB服务器版本相对应的手册,以找到在第1行附近的''处使用正确的语法。执行的SQL语句为:SELECT COUNT(*)FROM documents t LEFT JOIN docpaterns as p ON t.type = p.id,其中p.required = 1 AND t.status = 1 AND t.user_id =

这是我的代码

public function getDocsStatusNew() {
    // К новому модулю "документы"
    $reqDocPats = count(DocPatterns::model()>findAllByAttributes(['required' => 1]));

    $reqDocs = new CActiveDataProvider(Documents::model(), [
        'criteria' => [
            'join' => 'LEFT JOIN docpaterns as p ON t.type = p.id',
            'condition' => 'p.required = 1 AND t.status = 1 AND t.user_id = ' . $this->id,
        ],
    ]);

    if ($reqDocPats == count($reqDocs->data)) {
        return true;
    } else {
        return false;
    }
}

1 个答案:

答案 0 :(得分:1)

问题是$this->id是未定义的,因此在执行sql t.user_id = ' . $this->id,时返回t.user_id =并崩溃。修复此问题,它将起作用。

如果要获取登录的当前用户的id,可以执行以下操作:

Yii::$app->user->identity->id

所以:

' AND t.user_id = ' . Yii::$app->user->identity->id,