Laravel carbon总是设置为0000-00-00

时间:2015-02-08 10:37:15

标签: laravel-5 php-carbon

我需要在我的数据库中存储过期日期,以检查用户帐户在尝试登录时是否仍然有效。

这是我的用户模型:

class User extends Model implements AuthenticatableContract, CanResetPasswordContract {

    use Authenticatable, CanResetPassword;
    /**
     * The database table used by the model.
     *
     * @var string
     */
    protected $table = 'users';

    protected $dates = [
        'expiration_date'
    ];

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'first_name',
        'last_name',
        'email',
        'password',
        'expiration_date'
    ];

    /**
     * The attributes excluded from the model's JSON form.
     *
     * @var array
     */
    protected $hidden = [
        'password',
        'remember_token'
    ];

    /**
     * Questa funzione fa in modo di criptare in automatico la password quando si crea un utente
     *
     * @param $password
     *
     * @return string
     */
    public function setPAsswordAttribute( $password )
    {
        return $this->attributes['password'] = bcrypt( $password );
    }

    public function setExpirationDateAttribute( $expiration )
    {
        return $this->attributes['expiration_date'] = Carbon::createFromDate('Y-m-d', $expiration);
    }
}

在我的表单中,我有一个文本输入,使用datepicker以dd/mm/yyyy格式设置tabe。
当我在数据库中按提交时,我只得到0000-00-00 00:00:00

有什么问题?

1 个答案:

答案 0 :(得分:1)

代码中的

As you can seeCarbon::createFromDate($year = null, $month = null, $day = null, $tz = null)方法接受4个参数,并且您将无效参数传递给它。

我相信您正在寻找的方法是Carbon::createFromFormat($format, $time, $tz),它接受​​格式,带有日期或时间的字符串以及DateTimeZone实例或字符串时区作为参数。