Мне нужно использовать метод sql AES_DECRYPT, но строка не расшифровывается.
он работает в sql, но не в методе afterfind yii2
он возвращает ответ, как показано ниже.
Это ниже изображения таблицы БД.
public function afterFind() {
parent::afterFind();
//$this->name = new Expression('AES_DECRYPT("'.$this->name.'", "key test") as name ');
$this->name = new Expression('cast(AES_DECRYPT("'.$this->encrypt_name.'", "key test") as char) as name');
//return true;
}
AES_DECRYPT
не будет работать вafterFind()
, поскольку он должен быть обработан MySql (вы можете использовать PHP, но тогда вы, скорее всего, также захотите зашифровать его в PHP). Можно ли использовать выражениеAES_DECRYPT
при извлечении данных путем изменения запросаselect
или аналогичного? - person ldg   schedule 04.04.2018afterFind
. Вы хотите расшифровать во время запроса или после? Если вы вызываетеafterFind()
в модели, вы делаете это после выполнения запроса. Таким образом, использование класса, такого как yii\db\Expression, для какого-либо уже заполненного атрибута не имеет смысла. - person R13e   schedule 05.04.2018