Подскажите пожалуйста как можно иначе получить доступ к данным иначе чем через SqlDataProvider.
Для доктора у которого есть несколько пациентов нужно вывести всех кто сделал оплату в определенный месяц.
Отношение следующее: 1 доктор ко многим пациентам, 1 пациент ко многим платежам.
Сделал через SqlDataProvider но возможно есть более изящный путь решения средствами yii?
Проблема в том что данный пример работает нормально но пагинация не работает. Самостоятельно добавить OFFSET я тоже не могу потому что у запроса всегда есть добавление LIMIT .., добавляет yii.
Буду рад любым подсказкам.
Provider:
Код: Выделить всё
$count = Yii::$app->db->createCommand('
SELECT COUNT(*)
FROM Patient, Payment
WHERE Patient.doctor_id=:doctor_id
AND `payment`.`patient_id` = `patient`.`id`
AND date BETWEEN :start AND :end
',
[':doctor_id' => $id, ':start' => $form->getBeginDate(), ':end' => $form->getEndDate()])->queryScalar();
$provider = new SqlDataProvider([
'sql' => 'SELECT DISTINCT (patient.id) as patient_id,
capitation,
first_name,
last_name,
date
FROM Patient
LEFT JOIN `payment`
ON `payment`.`patient_id` = `patient`.`id`
WHERE `patient`.`doctor_id`= :doctor_id
AND date BETWEEN :start AND :end ',
'params' => [':doctor_id' => $id, ':start' => $form->getBeginDate(), ':end' => $form->getEndDate(),],
'totalCount' => $count,
'pagination' => [
'pageSize' => 2,
'params'=>[
'id' => $id,
],
],
]);