我上传表格,用户可以添加带标签的帖子。当我在输入字段中输入标签时,我发现了此错误
BelongsToMany.php第866行中的FatalThrowableError:
类型错误:传递给Illuminate \ Database \ Eloquent \ Relations \ BelongsToMany :: formatSyncList()的参数1必须是数组类型,给定null,在
中调用
这就是我在Tag
模型中所拥有的
public function itemTags()
{
return $this->belongsToMany('App\Item', 'item_tag');
}
在我的Item
模型中
public function taggs()
{
return $this->belongsToMany('App\Tag', 'item_tag');
}
我视野中的字段
<div class="form-group">
{!! Form::label('inputTags', 'Tags', array('class'=> 'col-sm-2 control-label')) !!}
{!! Form::text('tags', null, ['class'=>'form-control', 'id'=>'inputTags']) !!}
</div>
和控制器
public function store( ItemRequest $request )
{
$image = $request->file('image');
$filename=null;
if( $image && $image->isValid()){
$extension = $image->getClientOriginalExtension();
$uploadPath = public_path(). '/uploads';
$filename = rand(111,999). '.'. $extension;
$image->move($uploadPath, $filename);
}
$item = new Item;
$item->title = $request['title'];
$item->category_id = $request['category_id'];
$item->description = $request['description'];
$item->user_id = Auth::user()->id;
$item->url = $request['url'];
$item->image = $filename;
if($item->save()){
if(!is_null($filename)) {
$item_image = new Item_Images;
$item_image->image = $filename;
$item_image->item_id = $item->id;
$item_image->published = 1;
$item_image->save();
}
$request->session()->flash('alert-success','Item added successfully.');
}else
$request->session()->flash('alert-error','Can not add item now. Plese tyr again!!.');
$item->taggs()->sync($request->tags);
return redirect()->route('frontend.user.myitems');
}
错误在这一行
$item->taggs()->sync($request->tags);
这里有什么问题?
答案 0 :(得分:0)
您的标记值$request->tags
请求可能为空,请尝试调用同步:
$syncTagData = array();
//Passing empty array if tag request is empty...
if(!empty($request->tags)){
$syncTagData= $request->tags;
}
$item->taggs()->sync($syncTagData);
希望你好。
<强>更新强>
如果您的请求$request->tags
不是类型数组,请尝试以下代码:
$syncTagData = array();
//Passing empty array if tag request is empty...
if(!empty($request->tags)){
array_push($syncTagData, $request->tags);
}
答案 1 :(得分:0)
今天我在情节和特征之间的多对多关系中得到了相同的错误。 这背后的原因是用户没有选择功能,而null则传递给 sync()
$plot->featureset()->sync($request->features)
;
解决方案:
$feature_set = ($request->features) != null) ? $request->features : [];
$plot->featureset()->sync($feature_set);
此致
答案 2 :(得分:0)
尝试一下,该方法适用于我的项目。
if (isset($request->tags)) {
$intern->tags()->sync($request->input('tags'), false);
} else {
$intern->tags()->sync(array());
}