簡體   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