Как привиль слить массивы ArrayHelper?

Собственно вопрос в следующем есть модель User со свойствами id, firstName, lastName. Через ArrayHelper мне надо объединить эти поля то есть типа того.
ArrayHelper::map(User::find()->asArray()->all(),'id','firstName lastName');

Вот только вопрос в том как это сделать ?
  • Вопрос задан
  • 158 просмотров
Пригласить эксперта
Ответы на вопрос 2
slo_nik
@slo_nik Куратор тега Yii
есть другие предложения ?

Читать документацию, сказал сначала себе и теперь это повторяю Вам))))
$form->field($model, 'test')->dropDownList(ArrayHelper::map(User::find()->asArray()->all(), 'id', function($models){
       return $models['firstName'] . ' - ' . $models['lastName'];
   }
 )
)
Ответ написан
Комментировать
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
Много вариантов, первый показал @slo_nik
Второй, это метод toArray:
https://www.yiiframework.com/doc/guide/2.0/en/help...
$data = ArrayHelper::toArray(User::find()->all(), [
    'app\models\User' => [
        'id',
        'names' => function ($model) {
            return $model->firstName . ' ' . $model->lastName;
        },
    ],
]);
ArrayHelper::map($data, 'id', 'names');

Но лучше создать геттер в моделе User.
public function getFullName(){
     return $this->firstName . ' ' . $this->lastName;
}

и тогда:
ArrayHelper::map(User::find()->all(), 'id', 'fullName');
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы