2017-05-17 8 views
0

私はフィールドを作成するときに以下の検証を使用します。Laravel PUTは一意の必須フィールドです

$this->validate($request, [ 
     'client_name' => 'required', 
     'contact_name' => 'required', 
     'email' => 'required|unique:clients|email', 
]); 

ここで私はPUTでこれを編集しようとします。私は以下を試してください

$this->validate($request, [ 
    'client_name' => 'required', 
    'contact_name' => 'required', 
    'email' => 'required|unique:clients|email', 
]); 

    $client = \App\Client::find($id); 
    $client->client_name = $request->client_name; 
    $client->contact_name = $request->contact_name; 
    $client->email = $request->email; 
    $client->slug = str_slug($request->client_name, '_'); 
    $client->save(); 

問題点 - 私は一意の属性を削除すると、別のレコードと同じ電子メールアドレスとして設定することができます。私がレコードに残しておけばそれは保存されません。

回避策はありますか?

+0

あなたは一意でない電子メールを保存したいのですか? –

答えて

1

Laravelでユニークなバリデータの構文(here

ユニーク:テーブル、列、idColumn

ので

、除いては、あなたのコードでは、あなたがそれ以外はする必要があるIDを言及する必要があります独特のものを適用しながら。

$this->validate($request, [ 
    'client_name' => 'required', 
    'contact_name' => 'required', 
    'email' => 'required|unique:clients,client_email,clientid,'.$id.'|email', 
]); 

$client = \App\Client::find($id); 
    $client->client_name = $request->client_name; 
    $client->contact_name = $request->contact_name; 
    $client->email = $request->email; 
    $client->slug = str_slug($request->client_name, '_'); 
    $client->save(); 

も、私はそれはあなたを助けることを願っていますlaracast(here

にいくつかの議論を参照することができます。

関連する問題