2014-12-03 2 views
2

Я работаю с SQL Server 2008 и yii2. Чтобы сделать отношения «многие ко многим», я сделал таблицу перекрестных ссылок, чтобы присоединиться к двум таблицам поиска. И после генерации CRUD это отношение модели генерируется.Как работать со многими для многих отношений в yii2 и как вставлять данные в таблицы моста

/** 
* @return \yii\db\ActiveQuery 
*/ 
public function getEmailPageLists() 
{ 
    return $this->hasMany(EmailPageList::className(), ['email_id' => 'id']); 
} 

/** 
* @return \yii\db\ActiveQuery 
*/ 
public function getPages() 
{ 
    return $this->hasMany(PageLists::className(), ['page_id' => 'page_id'])->viaTable('email_page_list', ['email_id' => 'id']); 
} 

Теперь, как я могу связать эти таблицы? И где я могу использовать функцию link()? Я хочу вставить в таблицы моста, когда я вставляю в таблицу.

ответ

1

Это пример многие ко многим соотношением:

/** 
* @return \yii\db\ActiveQuery 
*/ 
public function getRecipes() 
{ 
    return $this->hasMany(Recipe::className(), ['id' => 'Recipe_id']) 
     ->viaTable('RecipeProduct', ['Product_id' => 'id'], function($query) { 
      return $query->where('RecipeProduct.status = "active"'); 
     }); 
} 

Или

/** 
* @return \yii\db\ActiveQuery 
*/ 
public function getProductProductCategories() 
{ 
    return $this->hasMany(ProductProductCategory::className(), ['Product_id' => 'id']); 
} 
/** 
* @return \yii\db\ActiveQuery 
*/ 
public function getCategories() 
{ 
    return $this->hasMany(ProductCategory::className(), ['id' => 'ProductCategory_id']) 
     ->via('productProductCategories'); 
} 

Это пример того, как определить отношение через другую модель. В этом случае я привязал продукт к категориям через отношение, называемое productProductCategories, которое определено выше.

Это ссылка на Активную запись, выделите бота на ссылку http://www.yiiframework.com/doc-2.0/guide-db-active-record.html#working-with-relationships. Я не пытался связывать множество записей.

+0

Ага! Кажется, я нахожу свое решение. Основная проблема, с которой я столкнулся, - это вставить данные в таблицу моста, которую я сделал для многих отношений. Я создал объект этого класса модели таблицы моста в своей функции create в контроллере и присвоил ему значения. Voila !!! Вот и все! Теперь он автоматически вставляет в таблицу мостов. :) – Rabib

+0

Вы пытались вставить ссылку, не имея таблицы отношений в качестве модели. Это не требуется, я верю, но я никогда не пробовал. –

+0

Нет Я не использовал функцию ссылки. Просто вставил данные из моей функции контроллера. – Rabib

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