2014-02-06 5 views
0

Я слежу за this учебником, чтобы установить много-много отношений между бизнес-моделью и моделью категорий.Yii many_many отношение не работает все время

Мои таблицы:

business[id (PK),name,date,...] 
business_category[businessID (FK to business.id), categoryID (FK to category.ID)] 
category[id (PK), name, date,...] 

В моей бизнес-модели я получил

public function relations() 
{ 
    return array(
     'categories'=>array(self::MANY_MANY, 'Category', 
          'business_category(categoryID,businessID)'), 
    ); 
} 

и в моей категории модели я получил

public function relations() 
{ 
    return array(
     'businesses'=>array(self::MANY_MANY, 'Business', 
          'business_category(categoryID,businessID)'), 
    ); 
} 

Когда я перехожу к виджет CListView

'dataProvider'=>new CActiveDataProvider('Business', array(
           'data'=>$model->businesses)), 

где $model модель категории, я затем цикл по категориям каждого бизнеса нормально: foreach($data->categories as $category)

Когда я $model = $this->loadModel($id) хотя $model->categories не имеет каких-либо результатов.

Что может быть неправильным?

+0

Вы пробовали пропустить loadModel() и сделать $ model = new YOURMODELNAME :: model() -> findByPk ($ pk) вместо этого? –

ответ

0

Предполагая, что вы сделали модель var_dump $ и гарантировали, что это не NULL, и у вас действительно есть модель, возвращаемая из loadModel(), я подозреваю, что это может быть связано с порядком ваших столбцов в отношении бизнеса. Попробуйте:

Категория Модель:

public function relations() 
{ 
    return array(
     'businesses'=>array(self::MANY_MANY, 'Business', 
          'business_category(businessID,categoryID)'), // Swapped order of columns 
    ); 
} 
0

Моя плохо ... Я возвращался несколько записей из запроса и вот почему $model->categories не работает.

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