我在Laravel应用程序上从三个不同的选项中获取用户的日期,即dd(1-31)mm(1-12)yyyy(1905-2016)
如何将其转换为php日期并将其插入由Laravel迁移使用fol代码创建的mysql列:
$table->date('dateOfBirth')->nullable();
另外,我想在编写之后使用Laravel验证器验证日期。
答案 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"
等问题。