2016-08-15 47 views
3

我得到這個錯誤語法::參數()必須是類型陣列

參數1傳遞給照亮\數據庫\語法::參數化(的)必須是類型的陣列,串給出的,

當我嘗試添加array[]在我查看使用選擇窗體。但是,當我刪除它,我沒有得到任何錯誤。我只是想在我的選擇列表中輸入一個多個值。我需要使用foreach嗎?

查看

<div class = "form-group {{ $errors->has('approver') ? ' has-error' : '' }}"> 

    <label for = "approver" class = "control-label">Approver:</label> 

    <select name = "approver[]" multiple class = "form-control select2-multi"> 

     @foreach ($approver as $list) 
      <option value = "{{ $list->id }}">{{ $list->username }}</option> 
     @endforeach 

    </select> 

    @if ($errors->has('approver')) 
     <span class = "help-block">{{ $errors->first('approver') }}</span> 
    @endif 

</div> 

控制器

public function getDocuments() 
{ 
    $approver = DB::table('users')->where('id', '!=', Auth::id())->get(); 

    return view ('document.create')->with('approver', $approver); 
} 

public function postDocuments(Request $request) 
{ 

    $this->validate($request, 
    [ 
     'title' => 'required|regex:/(^[A-Za-z0-9 ]+$)+/|max:255', 
     'content' => 'required', 
     'category' => 'required', 
     'recipient' => 'required', 
     'approver' => 'required', 
    ]);  


    $document = new Document(); 
    $approve = new Approve(); 
    $user = Auth::user(); 
           //Request in the form 
    $document->title = $request->title; 
    $document->content = $request->content; 
    $document->category_id = $request->category; 
    $approve->approver_id = $request->approver; 

    $approve->save(); 

    $document->save(); 

    $document->sentToApprovers()->sync([$approve->id],false); 

} 

更新

我死並轉儲$approver變量和給出的值的數組。

SC

也死不了並轉儲$request正如你可以在這裏看到我輸入的和我在選擇列表中的ID。

SC

+0

請從您的視圖顯示的foreach的'$ approver'值。 –

+0

@JaredEitnier我更新了我的帖子。 '$ approver'是一個變量,我將它傳遞給我的視圖請看。 – Francisunoxx

+0

好的,您的觀點或您嘗試保存模型時發生的問題也是如此? –

回答

4

好吧,你的問題是,你要保存的數組,你需要遍歷的審批,而不是一個奇異值。

各地更改您的控制器邏輯是:

foreach ($request->approver as $approver) { 
    $approve    = new Approve(); 
    $approve->approver_id = $approver; 
    $approve->save(); 

    $document->sentToApprovers()->sync([$approve->id],false); 
} 
+0

這起作用。但是當我試圖從選擇表單插入兩個值時,我遇到了一個問題。它只插入最後選擇的?我做了什麼,我選擇了'4'和'5',但是'5'只被插入。 – Francisunoxx

+0

當然,所以只需在循環內部實例化一個新的'Approve'模型,而不是在外部。 –

+0

感謝您解決我的問題。爲什麼它總是得到最後的選擇?爲什麼我需要創建一個新的實例? – Francisunoxx

相關問題