如何在Cakephp中为连接字段分配mysql函数

如何在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

我想得到最后的_期限和所有分期付款的分期付款计数,但很明显,这个查询将显示1个订单和最后的_期限

$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');