Yii2 中 indexBy 的使用詳解

2021-10-01 21:57:24 字數 1132 閱讀 6241

在專案開發中經常會使用到一些特殊的值作為陣列的索引,一般可以先查詢出資料後陣列迴圈拼接成所需的格式。不過yii2框架提供了一種更簡單的方法indexby()。

當你在呼叫all()方法時,它將返回乙個以連續的整型數值為索引的陣列。

而有時候你可能希望使用乙個特定的字段或者表示式的值來作為索引結果集陣列。那麼你可以在呼叫all()之前使用indexby()方法來達到這個目的。

例如:

// 以uid作為key值

$query = user::find()

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

->indexby('uid')

->asarray()

->all();

查詢結果如下:

,

"1002": ,

"1003":

}

如需使用表示式的值做為索引,那麼只需要傳遞乙個匿名函式給indexby()方法即可:

// 以uid和name組合作為key值

$query = user::find()

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

->indexby(function ($row) )

->asarray()

->all();

查詢結果如下:

,

"1002李四": ,

"1003王五":

}

注意: 與 groupby() 或者 orderby() 等查詢方法不同, 他們將轉換為 sql 查詢語句的一部分,而這個方法(indexby)在從資料庫取回資料後才生效執行的。 這意味著只能使用那些在你的 select 查詢中的列名。 此外,你用表名連線取列名的時候,比如 customer.id,結果中將只包含 id 列,因此你必須呼叫 ->indexby(『id』) 不要帶表名字首。

yii2的AR中indexBy()的用法

以人話的形式表達 用 asarray 來看更爽一點。之前array 0 array order id gd1811220941151655 failure types 1 array order id gd1811152028391624 failure types 加了indexby order ...

yii2中的場景使用

下面給大家介紹一下 yii2.0 場景的使用。小伙多嘮叨一下了,就是擔心有的人還不知道,舉個簡單的例子,現在在 post表裡面有 title image content 三個的字段,當我建立乙個 post 的時候,我想三個字段全部是必填項,但是你修改的時候,title content 兩個欄位是必填...

Yii2 使用一 安裝

composer global require fxp composer asset plugin 1.0.0 beta4 composer create project prefer dist yiisoft yii2 basic basic 安裝過程中,由於超出github限額,以前提示輸入gi...