1

我对 cakephp 还很陌生,find我的模型上有一个复杂的功能问题。

我有一个数,Groups每个包含一个数Users,并且每组可以做一个数Orders。每个订单由多个订单组成,OrderAmounts其中包含一个amount和一个user_id(与用户相关)。

我有一个查找,它找到了一个订单,并返回组中与该订单相关的所有用户以及与该用户对应的任何 OrderAmounts:

    $currentOrder = $this->Order->find('first', array(
        'conditions' => array(
            'Order.group_id' => $this->Session->read("Auth.User.group_id")
        ),
        'contain' => array(
            'Group' => array(
                'User' => array(
                    'OrderAmount' => array(
                        'OrderAmountType'
                    )
                )
            )
        )
    ));

我现在要做的是返回组中与上述订单相关的所有用户的列表,这些用户没有相应的 OrderAmount。

到目前为止,我有这个,但我不确定在哪里放置条件以排除具有 OrderAmounts 的用户 - 如果我将条件放在包含部分中,它只会从模型中删除 OrderAmounts,如果我将它们放在顶层在 find 中的条件我得到一个错误。

    $currentOrderOutstanding = $this->Order->Group->User->find('all', array(
        'conditions' => array(
            'Group.id' => $this->Session->read("Auth.User.group_id")
        ),
        'fields' => array('User.id'),
        'contain' => array(
            'OrderAmount',
            'Group'
        )
    ));
4

1 回答 1

0

看看教程中的这个例子:

$this->User->find('all', array(
'contain'=>array(
    'Profile',
    'Account' => array(
        'AccountSummary'
    ),
    'Post' => array(
        'PostAttachment' => array(
            'fields' => array('id', 'name'),
            'PostAttachmentHistory' => array(
                'HistoryNotes' => array(
                    'fields' => array('id', 'note')
                )
            )
        ),
        'Tag' => array(
            'conditions' => array('Tag.name LIKE' => '%happy%')
        )
    )
)

));

请注意,所有条件都在“包含”数组中。它有帮助吗?

于 2010-05-14T10:33:45.383 回答