2016-04-01 49 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的单引号之间使用变量。你也应该确保input和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和time应正确格式化。

一个例子独特的检查与我们正在运行的项目的更新请求额外何在:

/** 
* 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'=>'unique:event_cals,event_date,NULL,id,场地,{$ request->场地},时间,{$ request-> time}'这也没有验证知道。这意味着我可以添加一个具有与已添加行相似的eventDate,场地和时间值的行。 –

+0

你可以检查数据库日志和共享或调试pls。我不知道那里发生了什么 –

+0

我用db图更新了答案。有两行eventDate,时间,地点都是平等的。我想验证以避免这种情况。简单地说,在同一个事件日期,时间和地点不能发生两个事件。 –

相关问题