2017-01-22 5 views
0

2つの異なるテーブルに[code、status]という2つのカラムがあり、 'code'カラムに整数(392,21,2981,2743、 ..etc)、これらのコードが使用されているかどうかはステータスによってわかりますが、各テーブルで約100です。テーブルに対して2つのユニークなコードをチェックしてフォームを登録する

私は、ユーザーから提供さコードの両方がこれらの2つのテーブルでコードが一致し、ステータスを持っている場合、フォームにのみ提出することにしたい「0」

私は、コントローラに非常に簡単な検証を作成することもできますが、

  • フォームが両方ない限り提出していません:それdosen'tは、私はちょうど私がいることを確認することができるようにしたい私の検証ルールでそう

    public function formValidationPost(Request $request) 
        { 
    
         $this->validate($request,[ 
           'name' => 'required|min:5|max:35', 
           'email' => 'required|email|unique:users', 
           'mobile' => 'required|numeric', 
           'code_a' => 'bail|required|exists:code_a,code', 
           'code_b' => 'bail|required|exists:code_b,code' 
          ],[ 
           'name.required' => ' The name field is required.', 
           'name.min' => ' The name must be at least 5 characters.', 
           'name.max' => ' The name may not be greater than 35 characters.', 
          ]); 
    
         dd('You successfully added all fields.'); 
        } 
    

    を説明したものにあまり意味が提供されたコードはデータベース(code_a [table]とcode_b [table])で照合され、そのステータスは '0'になります。

これは意味があると思います。

おかげ

+0

何で、本質、問題ありますか?あなたの例は、あなたが望むものを正確に達成しているようです。 – Ohgodwhy

+0

動作しますが、where句を使用してステータスを0にチェックすることができませんでした – NMindz

答えて

1

Reference

use Illuminate\Validation\Rule; 

$this->validate($request, 
[... 
    'mobile' => 'required|numeric', 
    'code_a' => [ 
     'bail', 
     'required', 
     Rule::exists('code_a', 'code')->where(function($query) { 
      $query->where('status', 0); 
     }) 
    ], 
    'code_b' => [ 
     'bail', 
     'required', 
     Rule::exists('code_b', 'code')->where(function($query) { 
      $query->where('status', 0); 
     }) 
    ] 
], 
[...]); 
+0

'Illuminate \ Validation \ Rule'クラスが見つかりませんでした。Googleで検索しましたが、ヘルプが見つかりませんでした。 – NMindz

+0

'試してみてください –

+0

これはありがとう、それは働いた – NMindz

関連する問題