2017-11-11 222 views
0

我在驗證需要自定義規則的字段數組時遇到問題。我有以下驗證:laravel 5.4驗證自定義規則陣列

$validator = Validator::make($request->all(), [ 
    'order'  => 'required', 
    'service_id.*' => Rule::unique('order_services')->where('order_id', $request->order), 
    'due_date.*' => 'required|date', 
    'vendor' => 'required|integer', 
    'instructions' => 'string|nullable', 
    'lock_box' => 'string|nullable', 
    ]); 

到期日排列驗證就好了,但服務ID返回以下錯誤:

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'service_id.0' in 'where clause' (SQL: select count(*) as aggregate from `order_services` where `service_id`.`0` = 10 and `order_id` = 100f) 

服務ID規則防止重複記錄有相同的順序號,服務ID

規則在驗證單個服務ID時按預期工作,我只是不確定如何同時驗證多個服務ID。

在此先感謝

回答

0

默認情況下,Laravel使用鍵unique作用,因爲它是一個數組,鍵是0,1,2,依此類推。該解決方案是獨特的規則將列名這樣的:

Rule::unique('order_services', 'id')->where('order_id', $request->order), 

顯然,在你的情況,你可能需要其他的列名比id(這取決於你的應用程序)

+0

謝謝!我結束了使用Rule :: unique('order_services','service_id') - > where('order_id',$ request-> order), – Wireland