#laravel
#laravel
Вопрос:
У меня есть код Laravel 6, который ниже отображает массив с форматом объекта. Поэтому мне нравится отображать вместо массива на основе объектов просто массив, как я упоминал ниже.
$ins_affiliations = DB::table('ins_affiliations as af')
->select('af.id','af.name')
->where(['af.ins_category_id' => $ins_category_type[0]->category_id])
->get()->toArray();
мой код показывает
Array
(
[0] => stdClass Object
(
[id] => 12
[name] => NSDC
)
[1] => stdClass Object
(
[id] => 13
[name] => NCVT
)
[2] => stdClass Object
(
[id] => 14
[name] => AICTE
)
[3] => stdClass Object
(
[id] => 15
[name] => Others
)
)
что мне нужно
Array
(
[12] => NSDC
[5] => NCVT
[8] => AICTE
[11] => Others
)
Как я могу этого добиться?
Комментарии:
1. Вам нужен json_decode
2. Вы можете использовать
pluck('name', 'id')
вместоget()
этого для выполнения вашего запроса3. @sta json_decode работает не так, как я ожидал
Ответ №1:
Вы можете удалить ->toArray()
при извлечении данных, а затем использовать mapWithKeys, который является методом сбора
$ins_affiliations->mapWithKeys(function ($item) { return [$item->id => $item->name]; })
Затем вы можете использовать ->all()
, если хотите получить обычный массив