代码之家  ›  专栏  ›  技术社区  ›  Zemmy Indrapatih

不同日期格式的Laravel 5唯一(数据库)验证

  •  0
  • Zemmy Indrapatih  · 技术社区  · 7 年前

    以下是我当前的代码:

    private function setValidationRule(Request $request,$actionCode) {
        $rules = [];
        $rules['odaydate'] = 'required|unique:empofday|date_format:"d-m-Y"';
        return $rules;
    }
    
    public function postCreate(Request $request) {
        //Previous code...
    
        $validator = \Validator::make($request->all(),
            $this->setValidationRule($request,$actionCode),
            $this->setCustomValidationRuleMsg($request,$actionCode)
        );
        $validator->setAttributeNames($this->setValidationAttributeNames());
        if ($validator->fails()) {
            $view = $viewPri->withErrors($validator)->withInput();
        } else {
            $view = $viewSec;
        }
        return $view;
    }
    

    客户的过账数据为DD-MM-YYYY='15-10-2018'。

    然后我想用规则验证日期的唯一性:
    $rules['odaydate'] = 'required|unique:empofday|date_format:"d-m-Y"';


    select count(*) as aggregate from empofday where odaydate = '15-10-2018'
    因此得到的sql将是0而不是1。

    但如果我使用以下代码尝试手动sql:
    select count(*) as aggregate from empofday where odaydate = '2018-10-01'

    所以,我的问题是如何将laravel验证数据库唯一性的日期格式设置为 ?

    谢谢你的帮助。

    1 回复  |  直到 7 年前
        1
  •  0
  •   usmanhaq    7 年前

    如果您使用简单的文本框输入日期,我建议将其更改为某些日期选择器插件,插件确实具有显示不同于发送回数据库的日期格式的功能。

    之后,您可以删除日期格式验证,因为它将由插件管理,而unique将运行,因为插件发送的格式可以设置为MySQL格式(YYYY-MM-DD)

    对于jQuery UI日期选择器 http://api.jqueryui.com/datepicker/#option-altFormat