Я хочу выбрать некоторую запись из 4 таблиц, 1 основной таблицы: «пользователь» и 3 других таблиц (название модели: t1, t2, t3), и между «пользователем» и 3 существует отношение один ко многим.В другой таблице я хочу выбрать все записи из таблицы user, которые находятся в одной из трех таблиц. Если в трех таблицах нет информации в каждой из них, то запись не будет выбрана из таблицы user.
Я использую из CDbCriteria, я думаю, что условие в $ критериям правильное, Выберите правильные данные.Потому что нет проблем, если я не использую нумерацию страниц и все записи отображаются по одной на странице просмотра.(Виджет CGridView)
но в нумерации страниц у меня есть проблема.после этого мои ставки выполняются нумерацией страниц.Например: если pageSize of pagination - 20. Выберите 20 записей из пользовательской таблицы, и 13 из этих 20 чисел связаны с другими таблицами.Первая страница страницы просмотра показывает только 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',
),
));