我正在尝试将zend1站点升级到yii2,并且表模型经常使用fetchAssoc从数据库获取记录,其中ID列作为数组键。是否有yii2等价物?
实施例: PHP
$query = table::find()
->select(['id',
'firstName',
'lastName'
])->indexBy('id'); //no effect?
$command = $query->createCommand();
$results = $command->queryAll();
Datebase包含
[
[
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);
这会创建索引,但我更愿意使用框架来完成它。
由于
答案 0 :(得分:0)
要做到这一点,它需要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();