从控制器访问getDateFormat() - Laravel

时间:2016-10-01 11:28:34

标签: laravel laravel-5

是否可以从控制器或命令访问getDateFormat()方法?

我可以使用这样的模型:

public function getCreatedAtAttribute($value)
    {
        $format = $this->getDateFormat();   
        return  Carbon::createFromFormat($format, $value, 'UTC')->setTimezone(\Helper::getTimezone());
    }

但在我的控制器或命令中使用它时,如$format = getDateFormat();,我收到以下错误:

  

local.ERROR:异常   带有消息的'Symfony \ Component \ Debug \ Exception \ FatalErrorException'   '调用未定义的函数App \ Console \ Commands \ getDateFormat()'

2 个答案:

答案 0 :(得分:0)

如果我记得在drupal中使用它,那么

getDateFormat()不是php中的本机函数

所以..

如果您的$ value中有时间戳,则可以使用getDate(),这将返回一个包含小额借调的数组...

或者如果您的值不是时间戳,则可以使用dateTime()格式,如

public function getCreatedAtAttribute($value)
    {
        $date = new DateTime($value);
        $date->format('Y-m-d H:i:s'); 
        return $date;

    }

我希望这对你有所帮助 美好的一天

答案 1 :(得分:0)

当然你不能 - 因为它是Model类的受保护方法。

/**
 * Get the format for database stored dates.
 *
 * @return string
 */
protected function getDateFormat()
{
    return $this->dateFormat ?: $this->getConnection()->getQueryGrammar()->getDateFormat();
}

默认情况下,它只是

/**
 * Get the format for database stored dates.
 *
 * @return string
 */
public function getDateFormat()
{
    return 'Y-m-d H:i:s';
}

Carbon实例使用此格式作为默认值,因此如果您需要获取Carbon日期 - 只需使用Carbon::parse($value) - 它肯定会识别这种格式。默认情况下执行(string)Carbon::parse($value),您将获得此默认格式的日期原因:

/**
 * Format to use for __toString method when type juggling occurs.
 *
 * @var string
 */
protected static $toStringFormat = self::DEFAULT_TO_STRING_FORMAT;

/**
 * Format the instance as a string using the set format
 *
 * @return string
 */
public function __toString()
{
    return $this->format(static::$toStringFormat);
}

同时查看Carbon文档 - 有很多修饰符,如->toDateString()->toDateTimeString()