web-dev-qa-db-ja.com

Laravel検証-値が特定の配列に存在するかどうかを確認する方法は?

だから、私は検証ドキュメントから多くのルールを試しましたが、すべて同じエラーが表示されます

配列から文字列への変換

配列を追加する方法は次のとおりです。

$this->validate($request,[
                'employee' => 'required|in:'.$employee->pluck('id')->toArray(),
            ],[
                'employee.in' => 'employee does not exists',
            ]);

これを達成する方法についてのヒントはありますか?

カスタムバリデーターを作成しましたそれでも配列を渡すことはできないようです

7
Meta Pakistani

配列を文字列として内破し、コンマで結合します。

'employee' => 'required|in:'.$employee->implode('id', ', '),

これにより、バリデーターがin比較を行うときに期待する正しいコンマ区切りの文字列が作成されます。

編集

これは引き続き機能しますが、Laravelesqueの方法ではなくなりました。 @nielsianoによる回答を参照してください。

17
Ohgodwhy

更新:正解で説明されているように、自分で値を内破する代わりに、Ruleクラスを使用できるようになりました。単に行う:

['someProperty' => ['required', Rule::in(['needed', 'stuff'])]];

ドキュメントの「配列の検証」セクションで述べたように: https://laravel.com/docs/5.6/validation#validating-arrays

10
nielsiano