2011-01-19 2 views
1

Неполадка: Я хочу установить условия для соответствующей модели. Как делать?CakePHP - условия для соответствующей модели

У меня возникла проблема с ассоциациями в приложении CakePHP.

Ассоциации выглядит следующим образом:

Event has many EventSum belongs to Account has many AccountUser belongs to User 
Event has many EventDebt ... (the rest is the same as above) 
Event also belongs to User 

Приложение является частная программа econonmy в PHP и использует структуру CakePHP.

Событие - это финансовое событие, покупка, транзакция между учетными записями и т. Д. Он содержит только информацию о дате, названии и пользователе.

EventSum содержит информацию о качестве счета и сколько дебет или кредит (в одной колонке, только положительной или отрицательной).

Учетная запись содержит информацию о названии учетной записи.

AccountUser держит идентификатор в счета и пользователя. Это указывает на то, что


Итак, теперь я хочу, чтобы принести События, основанные на том, что счетах Пользователь связан с. Как я могу это сделать?

Я хочу получить следующую информацию: Событие вместе с EventSum. События выбираются из учетных записей, в которых пользователь имеет доступ.

Спасибо за любую помощь, /Magnus

ответ

1

Похоже, вы хотите, чтобы иметь возможность опрашивать Event класс со следующими условиями:

'Account.user_id =' => $userId 

Является ли мое предположение верно?

При выполнении запросов, требующих условий для соответствующих моделей, вы можете использовать либо поведение Containable (поставляется с CakePHP 1.3), либо поведение «Linkable» (которое можно найти here).

Что происходит, когда вы попробуете это (не забудьте прикрепить Containable поведение к моделям первой):

$condition = array('Account.user_id =' => $userId); 
$contain = array('EventSum' => array('Account'), 'EventDebt' => array('Account')); 
$result = $this->Event->find('all', compact('condition', 'contain')); 

Обратите внимание, что вы могли бы возникнуть проблемы, когда «содержащий» как EventSum и EventDebt, если оба их объединений до Account используйте одно и то же имя псевдонима.

+0

Извините за поздний ответ, но я решил его самостоятельно с помощью Контейнерного поведения. Поэтому ваш ответ был отмечен как правильный. Спасибо за ваш ответ. – Magnus

Смежные вопросы