繁体   English   中英

如何使用Yii2填充联接表?

[英]How do I populate a join table using Yii2?

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

仅当我手动设置标签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)-标题-内容

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(); 
        }

您是否尝试过在分配中使用标签

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在出现验证问题的情况下,-> save(false)的使用应限于测试阶段。 如果不删除此标志,则数据库中的数据集可能不一致。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM