php yii2地址,【PHP开辟框架】Yii2中怎样运用indexBy()

7ec366234a74e532200730804dad34ba.png

在项目开辟中经常会运用到一些特别的值作为数组的索引,平常能够先查询出数据后数组轮回拼接成所需的花样。不过YII2框架供应了一种更简朴的要领indexBy()。

当你在挪用all()要领时,它将返回一个以一连的整型数值为索引的数组。

而有时刻你能够愿望运用一个特定的字段或许表达式的值来作为索引效果集数组。那末你能够在挪用all()之前运用indexBy()要领来到达这个目标。

比方,

// 以uid作为key值

$query = User::find()

->select(['uid', 'name'])

->indexBy('uid')

->asArray()

->all();

查询效果以下:

{

"1001": {

"uid": "1001",

"name": "张三"

},

"1002": {

"uid": "1002",

"name": "李四"

},

"1003": {

"uid": "1003",

"name": "王五"

}

}

如需运用表达式的值做为索引,那末只需要通报一个匿名函数给indexBy()要领即可:

// 以uid和name组合作为key值

$query = User::find()

->select(['uid', 'name'])

->indexBy(function ($row) {

return $row['uid'] . $row['name']; // row中运用的字段名只能是查询返回的字段名

})

->asArray()

->all();

查询效果以下:

{

"1001张三": {

"uid": "1001",

"name": "张三"

},

"1002李四": {

"uid": "1002",

"name": "李四"

},

"1003王五": {

"uid": "1003",

"name": "王五"

}

}

注重: 与 groupBy() 或许 orderBy() 等查询要领差别, 他们将转换为 SQL 查询语句的一部分,而这个要领(indexBy)在从数据库取回数据后才见效实行的。 这意味着只能运用那些在你的 SELECT 查询中的列名。 另外,你用表名连接取列名的时刻,比方 customer.id,效果中将只包括 id 列,因而你必需挪用 ->indexBy(‘id’) 不要带表名前缀。

引荐:《YII教程》

以上就是Yii2中怎样运用indexBy()的细致内容,更多请关注ki4网别的相干文章!

收藏 | 0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值