2017-08-16 47 views
0

中调用我已经上传表单,哪个用户可以添加标签的帖子。当我在输入栏中输入标签,我得到这个错误类型错误:传递给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); 

有什么问题吗?

+0

尝试添加'DD($请求 - >所有())'在你的控制器方法的顶部检查'$ request'变量是否包含标签 – Asur

+0

是的,我看到它是数组:'“tags”=>“标签”' – Ivan

+0

你去了哪里,''标签''是一个字符串,而不是一个数组,这就是错误原因 – Asur

回答

1

可能是你的标签值$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); 
} 
+0

谢谢,但我仍然有错误。 – Ivan

+0

@Ivan:你是说同样的错误? –

+0

是的,同样的错误 – Ivan

相关问题