У меня есть три модели
Я хочу хранить отношения книг и их категорий в Таблице отображения категорий. Получая подробную информацию о категориях, используя checkboxlist
в YII в Form
книг.
подобно
Book Name: ______________
Book Author: ______________
Book Published: _____________
Categories---------------------------------------------
[] Educational [] Academic [] Spiritual []Self Help
-------------------------------------------------------
(Save)
Например:
В таблице отображения категорий
Book ID | Category ID
1 | 2
1 | 5
1 | 7
2 | 2
в controller/Book.php
public function actionCreate()
{
$model=new Book;
if(isset($_POST['Book']))
{
$bid=$model->book_id;
if(isset($_POST['Category'])){
foreach ($_POST['Category'] as $category) {
$category = new Category();
$category->attributes=$_POST['Category'];
$category->map_book_id=$bid;
$category[] = $category;
}
if(!empty($category)){
$category->save();
}
}
if($model->save()){
$this->redirect(array('view','id'=>$model->book_id));
}
}
$this->render('create',array(
'model'=>$model,
'category'=>$category,
));
}
Это не работает. Пожалуйста помоги.
Когда книга сохранена, вы хотите сохранить категории для нее в Category Mapping
Таблица.
Допустим, что модель для него CategoryMapping
,
Пытаться —
//After saving the Book, you have the Book Id in `$bid` variable.
$category_arr = array();
if(isset($_POST['Category'])){
foreach ($_POST['Category'] as $category) {
$category_map = new CategoryMapping();
$category_map->category_id = $category;
$category_map->book_id = $bid;
//..... some other attributes to set
if($category_map->save()) {
$category_arr[] = $category;
} else {
print_r($category_map->getErrors()); //Just for debugging
}
}
}
Затем —
$this->render('create',array(
'model'=>$model,
'category'=>$category_arr,
));
Других решений пока нет …