簡體   English   中英

yii2和select2用於標記

[英]yii2 and select2 for tags

我正在使用kartik select2小部件,如下所示:

echo Select2::widget([
        'model' => $model,
        'attribute' => 'script_tags',
        'data' => $model->tagList,
        'options' => ['multiple' => true,'placeholder' => 'Select states ...'],
        'pluginOptions' => [
            'tags' => true
        ],
    ]);

$model->tagList是從數據庫填充的具有此格式['id'=>'name']的數組。

我的問題是為什么將其保存到db表中是最好的,因為使用自定義標簽,我會對諸如此類的script_tags做出響應

[0=>'1', 1=>'5', 2=>'math'],

我需要在表tag[fields=id, name]保存新標簽,並在表tagmap[fields=id, script_id, tag_id]保存所有標簽的關系

我應該檢查是否在tagmap保存整數關系,如果是字符串,則將第一個新標簽保存在標簽表中,然后將關系保存在tagmap

您的方法看起來不錯,除非有人明確輸入數字作為標記值。 讓我們想象一下在標簽表中ID 1'foo'和ID 5'bar' 無法判斷是否有'foo,bar,math''foo,5,math' 您可以檢查這些ID是否確實存在於您的數據庫中並采取相應的措施,但這可能太過分了。

但是,我建議您看一下已經存在的一些標記解決方案。 我對2 amigos /yii2-taggable-behavior感到非常滿意,但也有creocoder / yii2-taggable ,也許還有很多其他的。

另外一個好處,2amigos taggable還存儲標簽頻率。

請記住,在tagmap中有一個id列(我敢打賭這是一個自動增量PK)是不好的做法,您應該將(script_id, tag_id)用作復合PK。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM