我正在使用 Yii2 和 Yii2 的标准方式从数据库中获取数据。还使用 JOIN,需要 23 个查询才能获取 90 行以及页面加载的一些其他内容。
但是当我开始在表中显示数据时,它变得很关键。每一行都有多张照片,我只拍了一张照片来展示。那是查询数量超过 100 的时候。
这就是我获取那张图片的方式:
Table1::find()->where(['IDauction'=>$ID])->limit(1)->orderBy('ID ASC')->one();
非常简单的查询,但是当我有 90 行并且每行都执行此查询时,每页超过 100 个。我不确定如何解决这个问题,因为当我使用关系显示所有数据时,查询次数超过 500。例如,我还获取了用户的个人资料图片,而该图片位于不同的表中。
目前我是这样做的
$query = Auction::find();
$query->joinWith(['relationIDpigeon', 'relationIDuser']);
$dataProvider = new ActiveDataProvider([
'query' => $query,
'sort'=> ['defaultOrder' => ['start_time'=>SORT_DESC]],//newest first
'pagination'=>
[
'pageSize'=>100,
]
]);
最佳答案
您的查询没有正确编写。你也应该在 Yii 中建立你的关系。这样您就可以引用相关的表和行。
你的查询应该是这样的
$result = Table1::model()->findAllByAttributes(array('IDauction' =>$ID),array('order'=>'ID ASC','limit'=> 1));
并像这样引用相关字段
$related_rows = $result->related_rows;
关于php - 每页查询太多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32082256/