Php 如何使用Yii2填充联接表?
因此,在数据库设置之后,我在创建带有标签下拉列表的博客文章时创建了一个表单,但在提交时,我希望它填充联接表 仅当我手动设置标签ID时,以下选项才起作用Php 如何使用Yii2填充联接表?,php,mysql,database,yii2,Php,Mysql,Database,Yii2,因此,在数据库设置之后,我在创建带有标签下拉列表的博客文章时创建了一个表单,但在提交时,我希望它填充联接表 仅当我手动设置标签ID时,以下选项才起作用 if ($model->load(Yii::$app->request->post())) { $model->save(false); $tags->blog_id = $model->id; //$tags->tag_id = 1;
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')) ?>
你试过在作业中使用标签吗
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->保存(false)的使用应限于测试阶段,以防出现验证问题。如果不删除此标志,可能会导致数据库中的数据集不一致。谢谢您的工作,但我不明白为什么它没有赋值,因为使用单个模型的默认表单不需要加载。似乎加载,加载所有模型(包括标记)。我不能肯定,因为我没有看到所有的代码。。最好显式加载$tags。但是默认表单使用了您在render中发送的两个变量$tags,这两个变量实际上都是在提交时包含的。。我认为它有效,但实际上没有db中的记录是在我手动设置控制器内的值而不是post值时出现的。下面的工作是$\u post['tags']['tag\u id'];但它并不理想,是吗?
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,
]);
}