我試圖設置laravel-tagging
系統並將其存儲到數據庫中。然而,它會創建兩個條目每次我提出與標籤的文章時間:laravel-tagging在數據庫中創建雙重條目
id taggable_id taggable_type tag_name tag_slug
'72', '128',
'73', '72', 'App\Article', 'Newtag1', 'newtag1'
第一項(id=72
)具有正確taggable_id
,第二個條目(id=73
)由laravel-tagging
自動創建並自動設置另一個taggable_id
到72
,它從零開始計數並表現得像自動增量。但它在數據庫模式中沒有自動增量設置。
這是我如何設置它:
1)我創建了一個新的模型實例:
$article = new Article;
2)然後我給你一個taggable_id
,這是創建一個帖子的ID與標籤:
$article->taggable_id = $postid;
3)我保存$article
到數據庫:
$article->save();
4)我覺得由taggable_id
數據庫中保存的行,並把它變成一個新的$article
:
$article = Article::where('taggable_id', $postid)->first();
5)我跑laravel-tagging
的tag
方法來獲取標籤到數據庫:
$article->tag($request->taggone);
6)我保存的行再次
$article->save();
這使我在開始時顯示了雙重輸入。爲什麼會發生?我究竟做錯了什麼?我只是想讓它使用原始條目來存儲這些標籤,而不是創建一個新的標籤。
編輯:我試過跳過第4步,結果是一樣的。
EDIT2我Article
模式是這樣的:
namespace App;
use Conner\Tagging\Taggable;
use Illuminate\Database\Eloquent\Model;
class Article extends Model
{
use Taggable;
protected $table = 'tagging_tagged';
public $timestamps = false;
}
爲什麼你需要步驟3和4?完整創建標記實例一次,然後將其保存到數據庫。 –
@KaranPunamiya如果我不保存它,我會收到一個錯誤:「完整性約束違規:1048列'taggable_id'不能爲空'。我甚至創建了一個關於它的問題[這裏](http://stackoverflow.com/questions/37132856/integrity-constraint-violation-1048-column-taggable-id-cannot-be-null)以及我能得到的唯一方法圍繞它是在使用'tag'函數之前保存它。 –
你能告訴我們你的'文章'模型嗎? – user3158900