如何在Cakephp中为连接字段分配mysql函数
我想得到最后的_期限和所有分期付款的分期付款计数,但很明显,这个查询将显示1个订单和最后的_期限如何在Cakephp中为连接字段分配mysql函数,cakephp,Cakephp,我想得到最后的_期限和所有分期付款的分期付款计数,但很明显,这个查询将显示1个订单和最后的_期限 $orders = $this->find('all', array( 'fields' => array( 'Order.order_id', 'Order.summary', 'Order.fee', 'BriefInstalment.id', 'MAX(`BriefInstalment`.`deadline`) AS la
$orders = $this->find('all', array(
'fields' => array(
'Order.order_id', 'Order.summary', 'Order.fee',
'BriefInstalment.id',
'MAX(`BriefInstalment`.`deadline`) AS last_deadline'
),
'conditions' => $conditions,
'joins' => array(
array(
'table' => $this->getTableName('default', 'brief_instalments'),
'alias' => 'BriefInstalment',
'type' => 'RIGHT',
'conditions' => array(
'Order.order_id = BriefInstalment.order_id',
'BriefInstalment.deleted' => 0,
),
'order' => 'BriefInstalment.deadline ASC',
)
),
'order' => 'BriefInstalment.deadline ASC'
));
我尝试了“包含”,但不起作用
'contain' => array(
'BriefInstalment' => array(
'fields' => 'BriefInstalment.id',
'fields' => array(
'BriefInstalment.id',
'MAX(`BriefInstalment`.`deadline`) AS last_deadline', 'COUNT(`BriefInstalment`.`id`) AS total_instalments'
),
'conditions' => array(
'BriefInstalment.deleted' => 0
)
)
),
顺便说一句,我不想用loop来获取最后的分期付款和cout-brief分期付款。e、 g.
// Determine deadlines
foreach ($orders as $i => $order) {
$deadline = $this->BriefInstalment->getLastDeadline($order['Order']['order_id']);
$orders[$i] += array(
...
'last-deadline' => $deadline,
'total-instalments' => count($order['BriefInstalment'])
);
}
原因是它降低了装载速度
任何帮助plz以下是如何创建自定义查询
$conditionsSubQuery['"User2"."status"'] = 'B';
$db = $this->User->getDataSource();
$subQuery = $db->buildStatement(
array(
'fields' => array('"User2"."id"'),
'table' => $db->fullTableName($this->User),
'alias' => 'User2',
'limit' => null,
'offset' => null,
'joins' => array(),
'conditions' => $conditionsSubQuery,
'order' => null,
'group' => null
),
$this->User
);
$subQuery = ' "User"."id" NOT IN (' . $subQuery . ') ';
$subQueryExpression = $db->expression($subQuery);
$conditions[] = $subQueryExpression;
$this->User->find('all', compact('conditions'));
参考:
要使用contain,您必须在模式中添加containable行为,是否添加了?public$actsAs=array('Containable');