CakePHP Inner Join не работает

Я пытаюсь преобразовать этот запрос MySQL в CakePHP, но он не работает.

Вот мой запрос MySQL

SELECT r.id, p.name, r.paid, p.created
       FROM patients p
       INNER JOIN reports r ON p.id = r.patient_id
       AND doctor_name LIKE '%dr.saidul%'

В CakePHP я попробовал ниже код

$query_options = array();
            $query_options['fields'] = array( 'Report.id', 'Report.paid','Patient.name','Patient.created' );
            $query_options['conditions'] = array( 'Patient.doctor_name'=>'%dr.saidul%');
            $query_options['joins'] = array('table' => 'Report',
                                    'type' => 'INNER',
                                    'conditions' => array(
                                        'Patient.id = Report.id',
                                    )
                                );

            $patientlist=$this->Patient->find('all', $query_options);

После проверки sql_dump это дает мне ниже результат

 SQL Query: SELECT `Report`.`id`, `Report`.`paid`, `Patient`.`name`, `Patient`.`created` FROM `diagnosis`.`patients` AS `Patient` LEFT JOIN `diagnosis`.`upazilas` AS `Upazila` ON (`Patient`.`upazila_id` = `Upazila`.`id`) LEFT JOIN `diagnosis`.`zilas` AS `Zila` ON (`Patient`.`zila_id` = `Zila`.`id`) LEFT JOIN `diagnosis`.`doctors` AS `Doctor` ON (`Patient`.`doctor_id` = `Doctor`.`id`) INNER JOIN `diagnosis`.`Report` ON (`Patient`.`id` => `Report`.`id`) WHERE `Patient`.`doctor_name` = '%dr.saidul%' 

Здесь ошибка: SQLSTATE[42000]: синтаксическая ошибка или нарушение прав доступа: 1064 В синтаксисе SQL имеется ошибка; проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы найти правильный синтаксис для использования рядом с '=> Report,id) ГДЕ Patient,doctor_name = '%dr.saidul%''в строке 1

1 ответ

Решение
I have submitted the cakephp inner join code please check it

$query_options = array();
            $query_options['fields'] = array( 'reports.id', 'reports.paid','Patient.name','Patient.created','Patient.doctor_name' );
            $query_options['conditions'] = array( 'Patient.doctor_name'=>'%dr.saidul%');
            $query_options['joins'] = array(
                                array('table' => 'reports',
                                'type' => 'INNER',
                                'conditions' => array(
                                    'Patient.id = reports.id',
                                    )
                                )
                            );
            $patientlist=$this->Patient->find('all', $query_options);
Другие вопросы по тегам