我有一个问题,我是cakePHP的noob,我使用cakePHP 1.3,我有很多subquerys的查询,并尝试使用查找句子或类似的东西将其转换为蛋糕的queryBuilder:
我的查询是下一个:
SELECT `PbFeedback`.`id`, `PbFeedback`.`createdby`, `PbFeedback`.`created`, `PbFeedback`.`msg`, `Usuario`.`name`, `PbFeedback`.`tipo`, COUNT(IF(PbFeedback.msg = 0, 1, 0))AS totalMsg, `Entidad`.`nombre` ,UltimoMensaje.* , #Subconsulta MensajeNuevo.* #Subconsulta FROM # A A `eon_feedback` AS `PbFeedback` LEFT JOIN # B B `eon_sys_usuarios` AS `Usuario` ON(`PbFeedback`.`createdby` = `Usuario`.`id`) LEFT JOIN `eon_entidades` AS `Entidad` ON( `PbFeedback`.`entidad_id` = `Entidad`.`id` ) LEFT JOIN (SELECT `F`.`createdby`, `F`.`created`, `F`.`msg`, `F`.`tipo` FROM eon_feedback AS `F` GROUP BY `F`.`createdby` ORDER BY F.created DESC ) AS UltimoMensaje ON (UltimoMensaje.createdby = `PbFeedback`.`createdby`) LEFT JOIN ( SELECT F.createdby AS usuario_id, COUNT(*) AS `count` FROM `eon_feedback` AS `F` WHERE `F`.`status` = 0 GROUP BY F.createdby ) AS MensajeNuevo ON MensajeNuevo.usuario_id = PbFeedback.createdby WHERE `PbFeedback`.`usuario_id` = 0 GROUP BY `PbFeedback`.`createdby` ORDER BY `PbFeedback`.`createdby` ASC LIMIT 0, 30 ;
谢谢;)
答案 0 :(得分:0)
我建议您查看 ContainableBehavior :
http://book.cakephp.org/1.3/en/The-Manual/Core-Behaviors/Containable.html
Containable允许您轻松构建复杂查询,例如:
$this->PbFeedback->find('all', array(
'contain' => array (
'Usuario',
'UltimoMensaje ',
'eon_feedback' => array (
'fields' => array ('created','msg','tipo'),
'conditions' => array ('eon_feedback.status =' => '0')
)
),
'limit' => 30
);