有没有yii2等同于zend1 fetchAssoc?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有没有yii2等同于zend1 fetchAssoc?相关的知识,希望对你有一定的参考价值。
我正在尝试将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();
以上是关于有没有yii2等同于zend1 fetchAssoc?的主要内容,如果未能解决你的问题,请参考以下文章
Yii2学习笔记1--Yii2的基本介绍和Composer安装