【问题标题】:How to validate date in laravel如何在laravel中验证日期
【发布时间】:2018-05-21 11:31:08
【问题描述】:

在验证方法中,我有以下内容:

$this->validate($request, ['test_date' => 'required|unique:test_db']);

test_db 中的 test_date 存储为 unix 时间。 在提交表单时,我在mm/dd/Y 中得到$request->get('test_date')

唯一验证不起作用,因为我在mm/dd/Y 中获取日期,这与 db(unix 时间)不同。

如何使其在此验证中独一无二?

【问题讨论】:

  • 那么你想把mm/dd/Y改成unix时间吗?
  • 独特:test_db.test_date
  • 你可以先用 unix 时间转换你的日期,然后用 db date 验证它
  • 分享一个日期样本?

标签: php laravel validation laravel-5 laravel-5.3


【解决方案1】:

我认为如果您更改日期格式,那么一切都会好起来的,所以试试这个:

$date = $request->get('test_date');

$newDate = date('d-m-Y', strtotime($date ));

在验证中使用这个$newDate

【讨论】:

    【解决方案2】:

    你可以试试这个:

    //get date from request
    $date = $request->get('test_date');
    
    //add the converted date to request
    $request->request->add(['new_date_field'=> DateTime::createFromFormat('m/d/Y', $date)->getTimestamp()]);
    
    //validate the updated date field
    $this->validate($request, ['new_date_field' => 'required|unique:test_db']);
    

    向请求中添加字段:Laravel is there a way to add values to a request array

    更新: 您可以使用 offsetSet 方法更新现有字段:

        //get date from request
        $date = $request->get('test_date');
    
        //update date in request
        $request->offsetSet('test_date', DateTime::createFromFormat('m/d/Y', $date)->getTimestamp());
    
        //validate the updated date field
        $this->validate($request, ['test_date' => 'required|unique:test_db']);
    

    更新请求字段: Modify request field value before saving in Laravel 5

    【讨论】:

      【解决方案3】:

      Laravel 提供称为 Accessors 和 mutators 的功能。

      访问器和修改器允许您在模型实例上检索或设置 Eloquent 属性值时对其进行格式化。

      欲了解更多信息,请访问:https://laravel.com/docs/5.5/eloquent-mutators#accessors-and-mutators

      希望这会对你有所帮助。

      【讨论】:

        猜你喜欢
        • 2021-03-17
        • 2020-08-04
        • 2020-10-24
        • 1970-01-01
        • 1970-01-01
        • 2019-06-12
        • 2021-06-01
        • 2023-03-21
        • 1970-01-01
        相关资源
        最近更新 更多