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