2016-05-11 27 views
2

フロントエンドでtaggingJS、バックエンドでlaravel-taggingを使用してタグ付けシステムを構築しようとしています。私はそれらを別々に動作させていますが、taggingJSによって生成されたタグをデータベースに入れることはできません。型エラー:Illuminate Database Grammar :: parameterize()に渡される引数1は配列型の文字列でなければなりません

マイLaravelコントローラは、次のようになります。

public function storeData(Request $request) 
{ 
    $link = new Links; 
    $link->tag_name = $request->taggone; 
    $link->save(); 

    $link->tag(explode(',', $request->taggone)); 
    $link->save(); 

    return view('pages.postdata', compact('tags')); 
} 

HTMLコードは次のようになります。私はこのような変わらないtaggingJS」Javascriptを左

<div class="example-wrapper"> 
    <div class="tags well"> 
     <label for="tag" class="control-label">Tag</label> 
     <div data-tags-input-name="taggone" id="tag"></div> 
    </div> 
</div> 

(それも関連している場合、私はわかりませんこの問題については、

<script> 
// jQuery on Ready example 
(function($, window, document, undefined) { 
    $(document).ready(function() { 
     var t = $("#tag").tagging(); 
     t[0].addClass("form-control"); 
     // console.log(t[0]); 
    }); 
})(window.jQuery, window, document); 
</script> 

正しく理解すれば、fiに入力されたタグコントローラtaggoneがコントローラから要求され、データベースに保存されるはずです。私は、フォームを送信するときしかし、私はエラーを取得する:

Type error: Argument 1 passed to Illuminate\Database\Grammar::parameterize() must be of the type array, string given, called in /home/vagrant/Code/Laravel/vendor/laravel/framework/src/Illuminate/Database/Query/Grammars/Grammar.php on line 678

は、私はそれが動作するように取得する方法についてアドバイスを持つことができますか?

答えて

1

フォームから文字列(配列ではなく)を渡しているようです。このようなtaggone入力に[]を追加することにより、htmlを調整するようにしてください:あなたはまだ同じエラーを受信して​​いる場合

<div data-tags-input-name="taggone[]" id="tag"></div> 

、どこかに完全なエラーメッセージを投稿してください。

+0

この方法を行うことができます。 –

+0

タグではなく、tag_nameを保存するときに、エラーが日付(created_at&updated_at)フィールドにあります: 'Grammar-> parameterize( '2016-05 -11 07:49:31 ') '。 Linksモデルはどのように宣言されていますか? – Noddy

+0

これは私のリンクモデルです: '<?ph 名前空間App; Conner \ Tagging \ Taggableを使用します。 Illuminate \ Database \ Eloquent \ Modelを使用します。 クラスリンクはモデルを拡張します { Taggableを使用します。 protected $ table = 'tagging_tagged'; } ' –

1

あなたは[]助けにはならなかった追加うん

public function storeData(Request $request) 
{ 
    $link = new Links; 
    $link->tag_name = $request->taggone; 
    $link1 = $link->save(); //Store it to a variable 

    //If your $request->taggone already an array you don't have to explode it, directly use $link1->tag($request->taggone); 
    // Explode if it's a string and use $link1->tag(explode(',', $request->taggone)); 

    $link1->tag($request->taggone); //In case $request->taggone array 

    //OR 

    $link1->tag(explode(',', $request->taggone)); //In case $request->taggone string 

    $link1->save(); 

    return view('pages.postdata', compact('tags')); 
    } 
+0

私は' tag 'を 'retag'に変更しましたが、私は同じエラーが発生します。多分それはそれほど遠からずにいるかもしれません。 –

+0

あなたはタグのためのサポータテーブルを持っていますか? –

+0

laravel-taggingパッケージには2つのテーブルがあります: 'tagging_tagged'と' tagging_tags' –

関連する問題