我使用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,
]
]);
您的查询没有写正确。你也应该在ii中建立你的关系。这样就可以引用相关的表和行。
你的查询应该像这样
$result = Table1::model()->findAllByAttributes(array('IDauction' =>$ID),array('order'=>'ID ASC','limit'=> 1));
并像这样引用相关字段
$related_rows = $result->related_rows;