是否可以从控制器或命令访问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()'
答案 0 :(得分:0)
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()