CakePHP 内部连接不工作
CakePHP Inner Join Not Working
我正在尝试将此 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
) WHERE Patient
.doctor_name
= ' 附近使用的正确语法%dr.saidul%'' 第 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);
我正在尝试将此 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
) WHERE Patient
.doctor_name
= ' 附近使用的正确语法%dr.saidul%'' 第 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);