Проблема исключения условий в сложной модели CakePHP - PullRequest
1 голос
/ 14 мая 2010

Я довольно новичок в CakePHP, и у меня возникла проблема со сложной функцией find в моих моделях.

У меня есть число Groups, каждое из которых содержит число Users, и каждая группа может сделать число Orders. Каждый заказ состоит из числа OrderAmounts, которое содержит amount и user_id (относительно пользователя).

У меня есть находка, которая находит Заказ и возвращает всех пользователей в Группе, относящихся к этому Заказу, и любые Заказы, соответствующие этому пользователю:

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

Теперь я хочу вернуть список всех пользователей в группе, имеющих отношение к вышеуказанному заказу, у которых нет соответствующей суммы заказа.

Пока что у меня есть это, но я не уверен, где поставить условие для исключения пользователей с OrderAmounts - если я помещу условия в составную часть, это просто удаляет OrderAmounts из модели, и если я помещаю их условия верхнего уровня в находке я получаю ошибку.

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

1 Ответ

0 голосов
/ 14 мая 2010

Посмотрите на этот пример из учебника :

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

));

Обратите внимание, что все условия находятся внутри массива'tain '. Это помогает?

...