【问题标题】:Laravel - convert input date format before saveLaravel - 在保存之前转换输入日期格式
【发布时间】:2014-09-16 20:47:31
【问题描述】:

我正在尝试将日期输入转换为正确的 mysql 格式。 我的 start_date 字段格式为 MM dd, yyyy。

在我的控制器存储功能中,我正在获取所有用户输入,包括 start_date 和保存。

$userProfileData->save();

我认为我可以做的是我们 Carbon 在像这样保存之前转换 start_date。

$userProfileData->start_date->toDateString();

我在非对象错误中调用成员函数 toDateString()。

【问题讨论】:

  • 我能够弄清楚这一点。 $start_date = date('Y-m-d', strtotime($userProfileData->start_date));

标签: laravel-4 php-carbon


【解决方案1】:

我可以通过将它添加到我的用户控制器存储功能来转换日期格式。

$userProfileData->start_date = date('Y-m-d', strtotime($userProfileData->start_date));

【讨论】:

    【解决方案2】:

    你得到非对象错误,因为 start_date 不是方法 toDateString() 的对象

    您可以在模型中使用 setStartDateAttribute() 方法,每次都会调用该方法以获取 start_date 属性值,在此方法中您可以修改值,以便模型将更新后的值用于编辑或更新等操作可以如下

    public function setStartDateAttribute($value) {
          $this->attributes['start_date'] = date('Y-m-d', strtotime($value) );
    }
    

    当你的模型需要获取start_date属性的值时,下面的方法会被你的模型使用,这个方法必须写在模型中

    【讨论】:

    • 我将此添加到我的用户模型中,但它没有转换 start_date。我需要以某种方式在我的控制器存储函数中调用它吗?
    • @Northify 因为您必须将 start_date 添加到模型的 $fillable 属性中,所以它要求该字段可以批量分配
    猜你喜欢
    • 2015-02-26
    • 1970-01-01
    • 2018-04-11
    • 2013-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-24
    • 2014-09-17
    相关资源
    最近更新 更多