所以我按照数据库设置,在创建带有标记下拉列表的博客文章时创建了一个表单但是在提交时我希望它填充连接表。
以下仅在我手动设置标签ID时有效。
if ($model->load(Yii::$app->request->post())) {
$model->save(false);
$tags->blog_id = $model->id;
//$tags->tag_id = 1;
$tags->save(false);
return $this->redirect(['view', 'id' => $model->id]);
} else {
return $this->render('create', [
'model' => $model,
'tags' => $brands,
]);
}
表单字段设置
<?= Html::activeDropDownList($tags, 'tag_id',
ArrayHelper::map(tags::find()->all(), 'id', 'title')) ?>
下面的表/数据库结构:
博客 -id(PK) -标题 -content
Blog_category -id(PK) -blog_id(FK) -tag_id(FK)
标签 -ID -title
更新
不确定以下是否是最好的方式,但它有效,欢迎任何改进。
foreach ($_POST['Tags']['tag_id'] as $tag){
$tags = new Tags();
$tags->blog_id = $model->id;
$tags->tag_id = $tag;
$tags->save();
}
答案 0 :(得分:2)
您是否尝试在作业中使用标签
if ($model->load(Yii::$app->request->post())) {
$modelTags = load(Yii::$app->request->post('tags')));
$model->save(false);
$tags->blog_id = $model->id;
$tags->tag_id = $modelTags->tag_id;
$tags->save(false);
return $this->redirect(['view', 'id' => $model->id]);
} else {
return $this->render('create', [
'model' => $model,
'tags' => $brands,
]);
}
PS使用 - &gt; save(false)应该限制在验证问题的测试阶段。如果不删除此标志,则可能是db。
中的数据集不一致