2017-11-11 12 views
0

カスタムルールを必要とするフィールドの配列の検証に問題があります。laravel 5.4カスタムルールで配列を検証する

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は、次のエラーを返し

$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

このルールは、単一のサービスIDを検証するときに期待通りに機能しますが、複数のサービスIDを同時に検証する方法がわかりません。デフォルトLaravelが事前

答えて

0

おかげで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

関連する問題