Javascript 类型错误:传递给Illuminate\Database\Grammar::parameterize()的参数1必须是给定字符串的数组类型
我正试图建立一个标签系统,在前端和后端使用。我让它们分别工作,但我无法让taggingJS生成的标记进入数据库 我的Laravel控制器如下所示: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
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