类型错误:传递给BelongsToMany :: formatSyncList()的参数1必须是类型数组,空给出,在
问题描述:
中调用我已经上传表单,哪个用户可以添加标签的帖子。当我在输入栏中输入标签,我得到这个错误类型错误:传递给BelongsToMany :: formatSyncList()的参数1必须是类型数组,空给出,在
FatalThrowableError in BelongsToMany.php line 866:
Type error: Argument 1 passed to Illuminate\Database\Eloquent\Relations\BelongsToMany::formatSyncList() must be of the type array, null given, called in
这是我在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);
有什么问题吗?
答
可能是你的标签值$request->tags
得到空的要求,尝试调用同步,如:
$syncTagData = array();
//Passing empty array if tag request is empty...
if(!empty($request->tags)){
$syncTagData= $request->tags;
}
$item->taggs()->sync($syncTagData);
希望这招呼你。
UPDATE
如果您的请求$request->tags
不是类型阵列,尝试以下代码:
$syncTagData = array();
//Passing empty array if tag request is empty...
if(!empty($request->tags)){
array_push($syncTagData, $request->tags);
}
尝试添加'DD($请求 - >所有())'在你的控制器方法的顶部检查'$ request'变量是否包含标签 – Asur
是的,我看到它是数组:'“tags”=>“标签”' – Ivan
你去了哪里,''标签''是一个字符串,而不是一个数组,这就是错误原因 – Asur