Heim  >  Artikel  >  Backend-Entwicklung  >  Yii2 应不应该在GridView的columns里边查询把id转换成名称呢?

Yii2 应不应该在GridView的columns里边查询把id转换成名称呢?

WBOY
WBOYOriginal
2016-08-18 09:15:44946Durchsuche

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,把结果预先保存在内存里,也可以有效地减少数据库压力。

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn