Создать отношение более трех таблиц в Yii - PullRequest
2 голосов
/ 18 апреля 2011

У меня есть следующий метод, который вызывает у меня проблемы, когда я пытаюсь создать отношение из более чем трех таблиц в 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

1 Ответ

0 голосов
/ 19 апреля 2011

В общем, Yii не создан для работы с «отношениями трех таблиц».Тем не менее, вы должны по-прежнему иметь возможность добавить условие () к вашему запросу отношения, я думаю, проблема в том, что вы не присоединились к таблице 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')
  ),
);

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...