2013-10-02 2 views
0

Я искал некоторые из них для этого, но я даже не знаю, как это назвать.CakePHP Containable: та же модель в глубокой ассоциации

В упрощенной версии, у меня есть эти модели:

  • Person (номер, имя) - hasMany: ArrivalDate
  • Country (номер, имя) - hasMany: Person
  • ArrivalDate (идентификатор, ARRIVAL_DATE, salesman_id) - belongsTo: Person, Salesman (= имя класса>Person)

Как вы можете видеть, я стараюсь, чтобы люди с датами прибытия и продавцы в ОДНОМ ТАБЛИЦЕ.

После получения данных я использую сдерживаемое поведение для получения только тех моделей, которые я хочу.

$person = $this->Person->find('first', array(
    'conditions' => array('Person.id' => $id), 
    'contain' => array(
     'Country', 
     'ArrivalDate' 
    ) 
)); 

Но вопрос: Как «содержать» в Salesman в этом?

Salesman это просто псевдоним для Person и если я содержать Person модель я просто получить родительские данные. Если я попытаюсь скрыть псевдоним (Salesman), я получаю сообщение об ошибке.

+0

Это называется автореферентной ассоциацией. –

+0

@Nebojsac Спасибо, это имеет смысл. – mtwell

ответ

0
'contain' => array(
     'Country', 
     'ArrivalDate', 
     'ArrivalDate.Salesman' => array(insert needed fields here ...) 
    ) 

должен работать в вашем случае

+0

Спасибо, очень просто. Я обнаружил, что проблема, с которой я столкнулась, была сложной виртуальной областью в модели Person. – mtwell

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