首頁  >  文章  >  後端開發  >  Yii2 不應該在GridView的columns裡邊查詢把id轉換成名稱呢?

Yii2 不應該在GridView的columns裡邊查詢把id轉換成名稱呢?

WBOY
WBOY原創
2016-08-18 09:15:44947瀏覽

1、Yii2 ActiveDataProvider自帶的分頁功能,在列表使用ActiveDataProvider的時候是不需要將查詢查出結果來的,平時為了方便就直接在GridView的columns裡邊查詢把id轉換成名稱,但是這樣的做法在查看debug的時候會出現同一語句多次執行,影響效率。從Yii2的使用規範來講這是不是不對?
2、如果不在GridView的columns裡邊查詢把id轉換成名稱的話,又該如何處理呢?在傳到GridView前使用多表關聯查詢把id轉換成名稱的做法可好?

回覆內容:

1、Yii2 ActiveDataProvider自帶的分頁功能,在列表使用ActiveDataProvider的時候是不需要將查詢查出結果來的,平時為了方便就直接在GridView的columns裡邊查詢把id轉換成名稱,但是這樣的做法在查看debug的時候會出現同一語句多次執行,影響效率。從Yii2的使用規範來講這是不是不對?
2、如果不在GridView的columns裡邊查詢把id轉換成名稱的話,又該如何處理呢?在傳到GridView前使用多表關聯查詢把id轉換成名稱的做法可好?

兩種手段結合:

  1. 在建構ActiveDataProvider時,加入with(),例如:

    <code>$query->with(['store'])->where(['name' => $something]);
    </code>

這樣在結果集會帶上store表的內容,不必重複查詢,這應該是標準做法;

  1. 實在規避不開的,啟用memcache,把結果預先保存在記憶體裡,也可以有效地減少資料庫壓力。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn