我使用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,
]
]);
答案 0 :(得分:1)
您的查询编写不正确。你也应该在Yii中建立关系。这样你就可以引用相关的表和行。
您的查询应如下所示
$result = Table1::model()->findAllByAttributes(array('IDauction' =>$ID),array('order'=>'ID ASC','limit'=> 1));
引用像这样的相关字段
$related_rows = $result->related_rows;