Yii2 - ActiveRecord в массив

Есть ли способ конвертировать ActiveRecord в массив в Yii2? Я знаю, что мы можем сделать это для ActiveQuery, например User:: find() → asArray() → one(); Но можем ли мы преобразовать модель в массив, когда она уже выбрана? Я хочу сделать это в функции beforeSave и сохранить этот массив в кеше. Спасибо.

Ответ 1

из Yii2 Guide использовать arrayHelper

    $posts = Post::find()->limit(10)->all();
    $data = ArrayHelper::toArray($posts, [
        'app\models\Post' => [
            'id',
            'title',
            // the key name in array result => property name
            'createTime' => 'created_at',
            // the key name in array result => anonymous function
            'length' => function ($post) {
                return strlen($post->content);
            },
        ],
    ]);

Ответ 2

Попробуйте это!

$model = Post::find($id)->limit(10)->asArray()->all();
$model = Post::find($id)->select('id,name as full')->asArray()->one();
$model = Post::find($id)->select('id,name as full')->asArray()->all();
$model = Post::find()->where(['slug'=>$slug])->asArray()->one();