我正在尝试使用以下格式在Array
中创建yii2
[
['id'=>'2', 'name'=>'ABC'],
['id'=>'3', 'name'=>'DEF']
]
到目前为止,我已经尝试使用ArrayHelper
类但是如果我map
使用它而不是从数组中删除key
部分,我需要以这种格式创建数组
$data = User::find()
->where(['id' => $id])
->orderBy('id DESC')
->all();
如您所知,在此代码之后,我获得了ActiveRecord
格式的数据,因此我只需要将它们转换为id
和name
数组,我不需要任何其他数据。
我试过这个
$data2 = ArrayHelper::map($data, 'id', 'name');
但是以下列格式返回数据
[
['2'=>'ABC'],
['3'=>'DEF']
]
我也试过这个
$data = MainCategory::find()->select('id,name')
->where(['id' => $id])
->orderBy('id DESC')
->asArray()->all();
但它以下列格式返回数组
[
'0' =>
[
'id'=>'2',
'name'=>'ABC'
],
'1' =>
[
'id'=>'3',
'name'=>'DEF'
]
]
我如何在key
中实现value
和yii2
格式?
答案 0 :(得分:2)
您可以像这样获取数据:
$data = User::find()
->select('id, name')
->where(['id' => $id])
->orderBy('id DESC')
->asArray()
->all();
答案 1 :(得分:0)
创建简单的KEY => VALUE数组使用column()
方法:
$data = User::find()
->select(['name', 'id'])
->where(['id' => $id])
->orderBy('id DESC')
->asArray()
->indexBy('id')
->column();
首先选择的列[name]将作为VALUE返回。