2016-04-01 19 views
0

このリクエストクラスでは、ルールが適用されます。複数のフィールドがlaravel 5で同時に一意であるかどうかを確認します。

return [ 
     'title' => 'required|unique:event_cals,title', 
     'eventDate' => 'required|date|after:yesterday', 
     'venue' => 'required', 
     'time' => 'required', 
     'type' => 'required', 
     'unique:event_cals,eventDate,NULL,id,venue,$request->venue,time,$request->time' 
    ]; 

以下のようなルールを検証したいと考えています。

 'eventDate' && 'venue' && 'time' => 'unique' 

ここで、同じeventDate、会場、時間のない行があるかどうかを確認する必要があります。誰もそのようなルールを宣言する方法を知っていますか?

これはdbテーブルのスナップショットです。ここで ​​

+0

は、カスタム検証を試みるhttps://laravel.com/docs/5.1/validation#custom-validation-rules – vsogrimen

+0

あなたは助けることができます私はサンプルコードでお願いしますか? –

+0

PHPを使用して単一引用符間で変数を使用することはできません。おそらく入力とdbが正確に一致するようにするべきでしょう。あなたはまた、妥当性検査されている列を指定していません –

答えて

1

が可能なソリューションです:

<?php 

return [ 
    'title'  => 'required|unique:event_cals,title', 
    'eventDate' => 'required|date|after:yesterday', 
    'venue'  => 'required', 
    'time'  => 'required', 
    'type'  => 'required', 
    'event_date' => "unique:event_cals,event_date,NULL,id,venue,{$request->venue},time,{$request->time}", 
]; 

は、私は再びそれを強調したいです。バリデーターを有効にするには、event_dateと時刻を正しくフォーマットする必要があります。

私たちの実行中のプロジェクトの更新要求からの追加のwheresと例のユニークなチェック:

/** 
* Get the validation rules that apply to the request. 
* 
* @return array 
*/ 
public function rules() 
{ 
    $id = $this->route('money'); 

    return $rules = [ 
     'name'  => "required|string|min:3|max:255|unique:moneys,name,{$id},id,deleted_at,NULL,access,public", 
    ]; 
} 
+0

'event_date' => 'ユニーク:event_cals、event_date、NULL、id、会場、{$ request->会場}、時間、{$ request-> time}'つまり、すでに追加された行に似たeventDate、会場、時刻の値を持つ行を追加できます。 –

+0

dbログをチェックし、plsを共有またはデバッグできますか?私はそこに何が起こっているのかわからない –

+0

私はdbの画像で答えを更新しました。そこには2つの行eventDate、time、会場が等しい。私はそれを避けるために検証したいと思います。単純に、同じeventDate、time、会場で起こっているイベントは2つありません。 –

関連する問題