Создайте отношение более трех таблиц в Yii

У меня есть следующий метод, который вызывает у меня проблемы, когда я пытаюсь создать отношение более трех таблиц в Yii:

public function relations() { return array( 'info'=>array(self::BELONGS_TO, 'Software', 'ITEM_ID'), 'categories'=>array(self::MANY_MANY, 'ItemCategory', 'item_cat_relation(item_id, cat_id)', 'condition'=>'categories.cat_of_type=item_meta1.item_type_id'), ); } 

Этот код дает ошибку в item_meta1.item_type_id

В общем, Yii не построен для обработки «трех табличных отношений». При этом вам все равно нужно добавить условие () в ваш запрос отношения, я думаю, проблема в том, что вы не item_meta1 таблице item_meta1 . Вы можете сделать это двумя способами:

1) Добавьте предложение JOIN в ваше отношение:

 return array( 'categories'=>array(self::MANY_MANY, 'ItemCategory', 'item_cat_relation(item_id, cat_id)', 'join'=>'JOIN item_meta1 ON categories.cat_of_type=item_meta1.item_type_id' ), ); 

1) Добавьте предложение WITH в ваше отношение (если у вас есть отношение для другой таблицы):

 return array( 'itemMeta'=>array(self::HAS_MANY, 'ItemMeta','item_type_id'), // I probably don't have this quite right, but you should get the idea 'categories'=>array(self::MANY_MANY, 'ItemCategory', 'item_cat_relation(item_id, cat_id)', 'with'=>'itemMeta', 'condition'=>'categories.cat_of_type=itemMeta.item_type_id') ), ); 

Я не тестировал какой-либо из этого кода даже немного, но я сделал аналогичные вещи, поэтому он должен работать в принципе. 🙂 Удачи!