91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Yii2中怎么使用indexBy()

發布時間:2020-12-18 10:17:07 來源:億速云 閱讀:321 作者:小新 欄目:編程語言

這篇文章給大家分享的是有關Yii2中怎么使用indexBy()的內容。小編覺得挺實用的,因此分享給大家做個參考。一起跟隨小編過來看看吧。

在項目開發中經常會使用到一些特殊的值作為數組的索引,一般可以先查詢出數據后數組循環拼接成所需的格式。不過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’) 不要帶表名前綴。

感謝各位的閱讀!關于Yii2中怎么使用indexBy()就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

老河口市| 鄂伦春自治旗| 屯留县| 彩票| 海原县| 塘沽区| 邻水| 柳林县| 柞水县| 宁安市| 达孜县| 馆陶县| 韶关市| 博湖县| 文安县| 济南市| 江门市| 亚东县| 天水市| 汨罗市| 长葛市| 安阳县| 鲁山县| 武陟县| 凤台县| 泗阳县| 于都县| 开封县| 新沂市| 山西省| 尼木县| 顺昌县| 明星| 那坡县| 涞源县| 靖州| 江永县| 昔阳县| 渝北区| 太仓市| 渝中区|