Yii2:插入数据库时​​使用mysql AES_ENCRYPT

时间:2018-03-23 10:53:39

标签: php mysql yii2

我收到以下错误:

  

找不到AES_ENCRYPT方法。

请帮我在YII2中使用这个SQL方法。

public function beforeSave($insert) {
        if (!parent::beforeSave($insert)) {
            return false;
        }
        if($insert) {
            $this->created_at = date('Y-m-d H:i:s');
        }
        $this->updated_at = date('Y-m-d H:i:s');
        $this->name = AES_ENCRYPT("'.$this->name.'", "SECERT KEY");
        return true;
    }

1 个答案:

答案 0 :(得分:2)

因为称之为

$this->name = AES_ENCRYPT("'.$this->name.'", "SECERT KEY");

将假设它是php方法,并且会搜索php个可用的函数,而您需要像CONCATSUM或任何其他函数一样运行它其他MYSQL函数。

您应该以下列方式将 \yii\db\Expression() 用于

$enc = new \yii\db\Expression('AES_ENCRYPT("'.$this->name.'","SECERT KEY")');
$this->name=$enc;

或简化它

$this->name=new \yii\db\Expression('AES_ENCRYPT("'.$this->name.'","SECERT KEY")');

希望它可以帮助你。