2016-05-11 17 views
2

Ich versuche ein Tagging-System mit taggingJS am Frontend und laravel-tagging am Backend zu erstellen. Ich habe sie beide separat arbeiten lassen, aber ich kann nicht die Tags erhalten, die von taggingJS erzeugt werden, um die Datenbank zu betreten.Type error: Argument 1 an Illuminate übergeben Database Grammar :: parameterize() muss vom Typ array sein, string

Mein Laravel Controller sieht wie folgt aus:

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')); 
} 

Der HTML-Code wie folgt aussieht:

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

I taggingJS‘Javascript unverändert wie folgt links (Ich bin nicht sicher, ob es überhaupt relevant ist zu dieser Ausgabe):

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

Wenn ich es verstehen, die Tags Eingang in die fi richtig, eld taggone sollen vom Controller angefordert und in der Datenbank gespeichert werden. Aber wenn ich das Formular bekomme ich den Fehler:

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

Kann ich einen Rat, wie man es an der Arbeit?

Antwort

1

Es sieht so aus, als ob Sie eine Zeichenfolge (anstelle eines Arrays) aus Ihrem Formular übergeben. Versuchen Sie, die html durch Zugabe von [] zum taggone Eingang wie folgt anzupassen:

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

Wenn Sie immer noch den gleichen Fehler zu erhalten, schreiben Sie die komplette Fehlermeldung irgendwo.

+0

Ja Zugabe von [] nicht helfen. Ich habe die vollständige Fehlermeldung hier: http://freetexthost.com/klzbomsrte –

+0

Der Fehler ist auf die Datum (created_at & updated_at) Felder beim Speichern von Tag_name, nicht die Tags: 'Grammatik-> parametrisieren ('2016-05 -11 07:49:31 ') '. Wie wird das Links-Modell deklariert? – Noddy

+0

Dies ist mein Linkmodell: '

1

Sie können auf diese Weise tun

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

Ich habe' tag' in 'retag' geändert und bekomme den gleichen identischen Fehler. Vielleicht kommt es nicht einmal so weit. –

+0

Haben Sie eine Tabelle für Tags? –

+0

Es gibt zwei Tabellen, die mit dem Laravel-Tagging-Paket geliefert wurden: "tagging_tagged" und "tagging_tags" –

Verwandte Themen