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

Javascript 类型错误:传递给Illuminate\Database\Grammar::parameterize()的参数1必须是给定字符串的数组类型,javascript,php,laravel,Javascript,Php,Laravel,我正试图建立一个标签系统,在前端和后端使用。我让它们分别工作,但我无法让taggingJS生成的标记进入数据库 我的Laravel控制器如下所示: public function storeData(Request $request) { $link = new Links; $link->tag_name = $request->taggone; $link->save(); $link->tag(explode(',', $reque

我正试图建立一个标签系统,在前端和后端使用。我让它们分别工作,但我无法让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'));
}
<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>
<div data-tags-input-name="taggone[]" id="tag"></div>
HTML代码如下所示:

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'));
}
<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>
<div data-tags-input-name="taggone[]" id="tag"></div>

标签
我将taggingJS的Javascript保持如下不变(我不确定它是否与此问题相关):


//jQuery上的Ready示例
(函数($,窗口,文档,未定义){
$(文档).ready(函数(){
var t=$(“#标记”).tagging();
t[0].addClass(“表单控件”);
//console.log(t[0]);
});
})(window.jQuery、window、document);
如果我理解正确,输入到字段
taggone
中的标签应该由控制器请求并保存到数据库中。但当我提交表格时,我会发现错误:

类型错误:参数1传递给 Illumb\Database\Grammar::parameterize()必须为数组类型, 字符串已给定,已调用 /home/vagrant/Code/Laravel/vendor/Laravel/framework/src/illighte/Database/Query/Grammars/Grammar.php 在线678


您能告诉我如何使用它吗?

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

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'));
}
<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>
<div data-tags-input-name="taggone[]" id="tag"></div>

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

您可以这样做

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

是的,没有帮助。我把完整的错误信息放在这里:错误出现在保存标记名时的日期(创建日期和更新日期)字段上,而不是标记:
Grammar->parameterize('2016-05-11 07:49:31')
。链接模型是如何声明的?这是我的链接模型:
我将
tag
更改为
retag
,并得到相同的错误。也许还没到那个程度。你们有saparate标签表吗?laravel标签包附带了两个表:
tagging\u taged
tagging\u tags