类型错误:传递给Illuminate \ Database \ Grammar :: parameterize()的参数1必须是类型数组,给定字符串

时间:2016-05-11 07:12:51

标签: javascript php laravel

我正在尝试使用前端的taggingJS和后端的laravel-tagging构建标记系统。我让他们两个单独工作,但我无法获得taggingJS生成的标签进入数据库。

我的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代码如下所示:

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

我留下标记JS&#39; Javascript保持不变(我不确定它是否与此问题相关):

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

如果我理解正确,输入到字段taggone的标签应该由控制器请求并保存到数据库中。但是当我提交表单时,我收到错误:

  

类型错误:参数1传递给   Illuminate \ Database \ Grammar :: parameterize()必须是类型数组,   给出的字符串,调用   /home/vagrant/Code/Laravel/vendor/laravel/framework/src/Illuminate/Database/Query/Grammars/Grammar.php   在第678行

我可以就如何让它发挥作用提出建议吗?

2 个答案:

答案 0 :(得分:1)

看起来您正在从表单传递字符串(而不是数组)。尝试通过将 [] 添加到 taggone 输入来调整html,如下所示:

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

如果您仍然收到相同的错误,请在某处发布完整的错误消息。

答案 1 :(得分: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'));
  }