如何将yyyy mm dd转换为laravel date并插入mysql date()列

时间:2016-06-13 18:19:48

标签: php mysql laravel date datetime

我在Laravel应用程序上从三个不同的选项中获取用户的日期,即dd(1-31)mm(1-12)yyyy(1905-2016)

如何将其转换为php日期并将其插入由Laravel迁移使用fol代码创建的mysql列:

$table->date('dateOfBirth')->nullable();

另外,我想在编写之后使用Laravel验证器验证日期。

2 个答案:

答案 0 :(得分:1)

如果它是单独的输入(Input::get('month')Input::get('day')Input::get('year')),那么您可以将它们组合成一个字符串:

$date = Input::get('year')."-".Input::get('month')."-".Input::get('day');

您也可以使用Carbon创建它:

$date = Carbon::createFromDate(Input::get('year'),Input::get('month'), Input::get('day'));

Carbon将帮助您验证格式是否正确。

答案 1 :(得分:1)

假设您要将数据发布到此控制器:

class MyController
{
    ....
    public function store(Request $request)
    {
        //validate
        $this->validate($request, [
            'day' => 'required|integer|min:1|max:31',
            'month' => 'required|integer|min:1|max:12',
            'year' => 'required|integer|min:1905|max:'.date('Y'),
        ]);

        //parse
        $day = $request->input('day');
        $month = $request->input('month');
        $year = $request->input('year');

        $dateOfBirth = \Carbon\Carbon::createFromDate($year,$month,$day);

        //persist
        if($dateOfBirth) {
            $model = new Model();
            $model->dateOfBirth = $dateOfBirth->toDateString();
            ...
            $model->save();
        } else {
            echo "Problem parsing date";
        }
    }
}

我的意见是,您应该使用日历组件来避免February "30"等问题。