我想从4个表,1个主表:“用户”和3个其他表中选择一些记录。(模型名称是:t1,t2,t3),“用户”和3之间存在一对多的关系其他桌子 我想从表用户中选择三个表之一中的所有记录,如果每个表中的3个表中都没有信息,那么将不会从表用户中选择记录。
我从CDbCriteria中使用,我认为$ criteria中的条件正确,请选择正确的数据。因为如果我不使用分页没有问题,并且所有记录一次显示在视图页面中,这是没有问题的。 (CGridView小部件)
但是在分页中我有问题。之后,我的投注进行分页。 例如: 如果分页的pageSize为20,请从用户表中选择20条记录,并将这20个数字中的13个链接到其他表。视图页面的第一页仅显示13个用户。视图页面应包含20条记录。 因此,每个页面都显示许多不同的记录。它从20条记录中选择并删除不包含条件的记录。显示剩余的内容,这将导致行数不规则。
$criteria = new CDbCriteria();
$criteria = array(
'with' => array(
't1' => array(
'together' => true,
'joinType' => 'LEFT JOIN',
),
't2' => array(
'together' => true,
'joinType' => 'LEFT JOIN',
),
't3' => array(
'together' => true,
'joinType' => 'LEFT JOIN',
),
),
'condition' => '(t1.user_Id=user.id or t2.user_Id=user.id or t3.user_Id=user.id ) ',
);
$dataProvider = new CActiveDataProvider('User', array(
'pagination' => array(
'pageSize' => '20',
),
'criteria' => $criteria,
'sort' => array(
'defaultOrder' => 'username DESC',
),
));