我正在尝试将zend1站点升级到yii2,并且表模型经常使用fetchAssoc从数据库获取记录,并将ID列作为数组键。是否有yii2等价物?
示例:PHP
$query = table::find()
->select(['id',
'firstName',
'lastName'
])->indexBy('id'); //no effect?
$command = $query->createCommand();
$results = $command->queryAll();
数据库包含
[
[
id=>15
firstName=>"fname",
lastName=>"lname"
],
[
id=>16
firstName=>"fname2",
lastName=>"lname2"
]
]
我想让它回归
[
15=>
[
id=>15
firstName=>"fname",
lastName=>"lname"
],
16=>
[
id=>16
firstName=>"fname2",
lastName=>"lname2"
]
]
代替
[
0=>
[
id=>15
firstName=>"fname",
lastName=>"lname"
],
1=>
[
id=>16
firstName=>"fname2",
lastName=>"lname2"
]
]
如果我加
$results=array_combine(array_column($results,key($results[0])), $results);
这会创建索引,但我更愿意使用框架来完成它。
谢谢
要做到这一点,它需要asArray(true)和indexBy('列名或函数'),然后调用all,或column或one。
$results = table::find()->asArray(true)->indexBy('id')->all()
我以前用过
$command = $query->createCommand();
$results = $command->queryAll();
最终代码示例:
$query = table::find()
->select(['id',
'firstName',
'lastName'
])->indexBy('id')->asArray(true);
$results=$query->all();