laravel-taggingを設定しようとしていますが、これはLaravelの最も一般的なタグ付けシステムです。しかし残念なことに、フロントエンドの機能はありません。 guideがあり、私は完全にそれを辿っています。タグを作成しようとしている間に終わり、私はエラーに遭遇:整合性制約違反:1048列 'taggable_id'はnullにはできません
SQLSTATE [23000]:整合性制約違反:1048カラム 'taggable_idは、' SQL(nullにすることはできません。
tagging_tagged
(tag_name
、tag_slug
に挿入、taggable_type
、taggable_id
)私は、人々は、このようなthis、thisとthisと同様のエラー、に走ったいくつかの他の記事を見つけました (チーズ、チーズ、アプリケーション\リンクス、))
値。しかし、いずれも決定的な解決策を提供していません。人々、そして常識では、taggable_id
を含むモデルは、タグがデータベースに格納されるように保存する必要があると言います。私の場合$link->save();
を使用して、それを保存する私の試みは動作しません
public function storeStuff(Request $request)
{
// Create the link first
$link = new Links;
// Now add tags
$link->tag(explode(',', $request->tags));
// Try to save tags?
$link->save();
}
:コントローラのための私のコードは次のようになります。私はまだtaggable_id
列を含む同じエラーと私のデータベーステーブルtagging_tagged
を取得し、まだヌルでいっぱいです。誰もこの問題にアプローチする方法についてアドバイスをしていますか?
EDIT:私はそれがトビアス・カールソンによって示唆されているように保存別を追加することによって動作するようになった:
$link = new Links;
$link->tag_name = $request->tags;
$link->save();
// Now add tags
$link->tag(explode(',', $request->tags));
$link->save();
私もcreated_at
エラーが不足し修正するためにタイムスタンプを追加する必要がありました。タイムスタンプは、laravel-taggingパッケージに付属している初期移行には含まれていませんが、タグに便利かどうかはわかりません。私tagging_tagged
表には次のようになります。
FIELD TYPE NULL KEY
id int(10)unsigned NO PRI auto_increment
taggable_id int(10)unsigned NO MUL
taggable_type varchar(255) NO MUL
tag_name varchar(255) NO
tag_slug varchar(255) NO MUL
created_at timestamp YES
updated_at timestamp YES
私はまだタグを自動入力するにはJavascriptを取得しようとしています。私はそれがすべて働いたら、この質問を更新します。
私は 'taggable_id'は外部キーだと思いますし、同じものに対してNULLデータを入力することはできません。したがって、制約を削除するか、その列の値を追加してください。 – prava
'taggable_id'は主キーですか?次のSQLクエリの出力を貼り付けることができます: 'DESCRIBE tagging_tagged' – dimlucas
基本的に' id'を持たないリソースにタグ付けしようとしています。 IDを取得するには、まずそれを保存してからタグを追加する必要があります。 –