2017-05-12 15 views
0

私はAppServiceProviderにあるカスタムバリデータを作成しました。 bootメソッドには、バリデータに渡された最初のpatameterをテーブル名として受け入れるDBメソッドが含まれています。私は手動でテーブル名を記入すると、それは動作しますが、最初のパラメータが渡されたとき、私はこのエラーに遭遇:カスタムバリデータに変数を渡す方法

QueryException in Connection.php line 729: 
SQLSTATE[42S02]: Base table or view not found: 1146 Table 'server1.{users}' 
doesn't exist (SQL: select count(*) as aggregate from `{users}` where `email` = 
[email protected] and `STORE_ID` = 2) 

は、ここに私のサービスプロバイダーのコードです:どこに問題

public function boot() 
{ 
    Validator::extend('uniqueForStore', function ($attribute, $value, $parameters, $validator) { 
     $count = DB::table($parameters[0])->where($attribute, $value)->where('STORE_ID', config('constants.STORE_ID'))->count(); 
     return $count === 0; 
    }); 
} 

ですある:

DB::table($parameters[0]) 

は、ここに私の登録ユーザーフォーム要求コードです:

public function rules() 
{ 
    return [ 
     'first_name' => 'required', 
     'last_name' => 'required', 
     'email' => "uniqueForStore:{users}", 
     'password' => 'required|min:6' 
    ]; 
} 
+1

あなただけの「uniqueForStore:ユーザー」に設定カント? –

+0

ありがとう@PatrykWoziński。できます。答えを加えれば、それを受け入れることができます。 – andromeda

+0

ありがとう。 :) –

答えて

1

以下のようにあなたの検証ルールを設定します - ちょうど(ユーザー)のユニークな値のためのブラケットを削除します。

public function rules() 
{ 
    return [ 
     'first_name' => 'required', 
     'last_name' => 'required', 
     'email' => "uniqueForStore:users", 
     'password' => 'required|min:6' 
    ]; 
} 
関連する問題