使用laravel

时间:2016-09-26 06:25:40

标签: php mysql laravel date

我有一个jquery datepicker

$(function() {
    var date = new Date();
    var currentMonth = date.getMonth();
    var currentDate = date.getDate();
    var currentYear = date.getFullYear();
    $('.datepicker').datepicker({
    showOn: 'focus',changeMonth: true,
    minDate: new Date(currentYear, currentMonth, currentDate),
    changeYear: true,

});
});

进行一些验证

    $this->validate($request, [
        "date" => 'required|date',
    ]);

和一些转换为日期以传递到数据库

    $date = $request->input('date');
    $date2 = DateTime::createFromFormat('m/d/Y',$date);
    $date3 = $date2->format("Y-d-m");

如果我此时dd($ date3),选择日期,我会得到类似的东西

"2016-29-09"

一切都很好,mysql似乎以y-d-m格式保存。

现在我要通过

    Message::where('id', $messageId)->update([
        'updated_at' => Carbon\Carbon::now(),
        'subject' => 'Status: Price quote delivered.',  
        'quoted' => 1,
        'price' => $request->input('price'),
        'estimated_date'  => $date3,            
    ]);

除了日期之外,所有内容都会传递到数据库。这个日期只停留在数据库中的。

帮助?

4 个答案:

答案 0 :(得分:3)

请注意,您将日期保存为YEAR-DAY-MONTH,而DATE的正确格式为YEAR-MONTH-DAY

另请注意,$date3的值为" 2016-29-09",这会在您的表中插入值" 0000-00-00"由于月份值无效且月份的正确范围为(1-12),数据类型为DATE

<强>解决方案:

您需要根据列的数据类型更改日期格式(YEAR-MONTH-DAY)。

$date3 = $date2->format("Y-m-d"); // something like 2016-09-26

您还可以参考以下内容: http://dev.mysql.com/doc/refman/5.7/en/datetime.html

答案 1 :(得分:2)

兄弟,请检查以下一行:

一切顺利,mysql似乎以y-d-m格式保存。 现在,当我通过

Mysql默认格式为

  

Y-M​​-d

不是

  

的y d-M

更改格式,然后重试。

答案 2 :(得分:2)

你要做的就是:

自:

$date3 = $date2->format("Y-d-m");

要:

$date3 = $date2->format("Y-m-d");

答案 3 :(得分:1)

我看到你正在使用一个javascript日期对象,然后它在Laravel中验证,你为什么不使用Carbon?如果验证日期,那么让Carbon和Laravel处理所有日期工作,而不是重新发明轮子:

$date = new \Carbon\Carbon($request->input('date'));

Message::where('id', $messageId)->update([
    'updated_at' => Carbon\Carbon::now(),
    'subject' => 'Status: Price quote delivered.',  
    'quoted' => 1,
    'price' => $request->input('price'),
    'estimated_date'  => $date,            
]);