尝试将DateTimePicker中的值插入数据库,但导致无效的日期时间格式

时间:2017-09-28 11:16:45

标签: mysql laravel xampp

我正在尝试插入DateTimePicker中的值,因为它不是因为我是这个平台的初学者而没有取值。那么我如何转换格式并保存到数据库中。

public function store(Request $request) {

    $input = Request::all();
    $input['dob'] = Carbon::now();
    $input['app_date'] = Carbon::now();
    patient_user::create($input);
    return redirect('patient_user');
    $dob = Date::createFromFormat('Y-m-d');
    $app_date = Date::createFromFormat('Y-m-d');
    $dob->setTime(0, 0, 0);
    $app_date->setTime(0, 0, 0);
    echo $dob->getTimestamp();
    echo $app_date->getTimestamp();

        DB::table("patient_users")->insert([
            "patient_firstname"=>$request->get("patient_firstname"),
            "patient_lastname"=>$request->get("patient_lastname"),
            "middle_name"=>$request->get("middle_name"),
            "gender"=>$request->get("gender"),
            "dob"=>(new DateTime($request->get('dobe')))->format('Y-m-d'),
            "pat_age"=>$request->get("pat_age"),
            "app_date"=>(new DateTime($request->get('app_date')))->format('Y-m-d'),
            "app_time"=>(new DateTime($request->get('app_time')))->format('H:i:s'),
            "branch_location"=>$request->get("branch_location")
        ]);
    }

Migration:
Schema::create('patient_users', function (Blueprint $table) 
        {
            //$table->increments('id');
            //$table->increments('patient_id');
            $table->string('patient_firstname');
            $table->string('patient_lastname');
            $table->string('middle_name');
            $table->boolean('gender');
            $table->date('dob');
            $table->increments('pat_age');
            $table->date('app_date');
            $table->dateTimeTz('app_time');
            $table->string('branch_location');
            $table->timestamps();
        }

3 个答案:

答案 0 :(得分:0)

问题是你在函数的开头有一些不属于那里的代码。返回后的代码将不会执行。

请使用以下代码替换您的函数,并告诉我它是如何工作的:

public function store(Request $request) {
    DB::table("patient_users")->insert([
        "patient_firstname"=>$request->get("patient_firstname"),
        "patient_lastname"=>$request->get("patient_lastname"),
        "middle_name"=>$request->get("middle_name"),
        "gender"=>$request->get("gender"),
        "dob"=>(new DateTime($request->get('dobe')))->format('Y-m-d'),
        "pat_age"=>$request->get("pat_age"),
        "app_date"=>(new DateTime($request->get('app_date')))->format('Y-m-d'),
        "app_time"=>(new DateTime($request->get('app_time')))->format('H:i:s'),
        "branch_location"=>$request->get("branch_location")
    ]);
}

答案 1 :(得分:0)

您确实知道return redirect('patient_user');之后的代码没有运行,并且它是创建您的记录的行patient_user::create($input);吗?另外,你不应该直接在Laravel中使用$ _POST,你可以使用$request->get();数组中的$input或值

如果您已将日期字段设置为模型中$ dates数组的一部分,则可以直接为其分配一个unix时间戳,Carbon将为您处理其余部分。你的patient_user类如何看待你的DateTimePicker返回Unix时间戳?

答案 2 :(得分:0)

尝试使用Carbon::parse($date)解析它:

...

"dob" => Carbon::parse($_POST["dob"])->format('Y-m-d'),

...

如果它采用任何日期格式,parse方法应该弄清楚。