【问题标题】:Date input validation against database in Laravel在 Laravel 中针对数据库的日期输入验证
【发布时间】:2014-12-25 23:55:45
【问题描述】:

这就是我所拥有的,它只是多次存储值,即使我有一个规则来检查数据库中“约会”表的唯一性。 谁能建议我如何在我的表中只存储唯一的日期。提前致谢。

    public function store()
        {
            date_default_timezone_set('Australia/Melbourne');
            $date = date('Y/m/d', time());
            $todDate = new DateTime($date);
            $dateFormated = $todDate->format('Y-m-d');

        $input = Input::all();

        $rules = array(
            'appoint_day' => 'required|unique:appointments'
        );

        $validator = Validator::make($input, $rules);

        if($validator->passes())
        {
            $schedule = new Appointment;
            $appoint_day = Input::get('appoint_date');

            if(strtotime($appoint_day) - strtotime($dateFormated) >= 0)
            {
                $schedule->user_id = Auth::user()->id;
                $schedule->appoint_day = $appoint_day;
                $schedule->save();
            }
        }
        else
        {
            echo 'failed';

        }
 return View::make('admin.professions.appointments');
    }

【问题讨论】:

    标签: php validation laravel laravel-4


    【解决方案1】:

    您的Input 值被命名为appoint_date,但您正在验证一个名为appoint_day 的字段,该字段可能不存在。将您的字段名称更改为appoint_day,验证器应该可以正常工作。

    【讨论】:

    • 哇!很奇怪!指定日期是表中的列名,其中指定日期是输入字段名称。是的,您的解决方案有效,但我不明白其背后的原因。非常感谢!!。
    • 这是因为验证器希望检查 fields 的名称(在 Input 数组中),但您没有 appoint_day 字段...所以它没有验证任何东西。此外,unique 规则使用输入字段名称作为列名称检查数据库,除非您另外指定。因此,如果您将字段名称保留为appoint_date,您也可以选择使用'appoint_date' => 'required|unique:appointments,appoint_day'
    • 请与上述问题相关的快速帮助:如何使用唯一用户验证唯一的“约会日期”?意味着,像 01/01/2010 这样的同一日期对于用户 1 和用户 2 都是唯一的!以下内容如何: $rules = array( 'appoint_day' => 'required|unique:appointments, user_id' );
    • 我不确定我是否遵循您想要完成的目标;您建议的代码将检查appoint_day 在字段user_id 中是否唯一。需要有关您的意图的更多信息...我建议您发布一个包含完整详细信息的新问题。
    猜你喜欢
    • 2018-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多