Php 如何使用Yii2填充联接表?

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;

因此,在数据库设置之后,我在创建带有标签下拉列表的博客文章时创建了一个表单,但在提交时,我希望它填充联接表

仅当我手动设置标签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')) ?>

你试过在作业中使用标签吗

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,
    ]);
}