我从数据库中得到一个空日期并像这样在模型中转换为碳对象......
protected $dates = array(
'date',
}
然后在 Controller 中,我使用 compact('object') 传递对象
但是当我在 Blade 模板中显示 $object->date 时,我得到 '30-11--0001' 并且我想显示 'None'
我试过了
@if ($object->date !== '30-11--0001') $object->date else 'None' @endif
不工作
@if (date('d-m-Y',strtotime($object->date)) !== '30-11--0001') $object->date else 'None' @endif
不工作
@if (empty($object->date)) $object->date else 'None' @endif
不工作
如果我做一个 var_dump 我得到
class Carbon\Carbon#491 (3) { public $date => string(27) "-0001-11-30 00:00:00.000000" public $timezone_type => int(3) public $timezone => string(13) "Europe/Madrid" }
有什么建议吗?谢谢
最佳答案
为此,您有几个选择。您可以在给定的模型中、在基础模型中控制它,因此它适用于您的所有模型,或者在最合适的展示器中进行控制,因为它属于展示层。
顺便说一句,这不是 null
而是默认 0000-00-00 00:00:00
时间戳。 null
值(value)不会被这样对待。
1 个最短的解决方案 - 型号:
public function getCreatedAtAttribute($timestamp)
{
// flexible:
return ( ! starts_with($timestamp, '0000')) ? $this->asDateTime($timestamp) : 'None';
// or explicit:
// return ($timestamp !== '0000-00-00 00:00:00') ? $this->asDateTime($timestamp) : 'None';
}
2 通用解决方案 - 覆盖
asDateTime
在您的 BaseModel
(假设您使用一个):protected function asDateTime($value)
{
if (starts_with($value, '0000')) return 'None';
return parent::asDateTime($value);
}
这会影响您希望更改为
Carbon
的所有属性 .3 主持人 (我假设它只是包装了
model
,实现取决于您的需要):public function createdAt()
{
$timestamp = $this->model->created_at;
return ( ! starts_with($timestamp, '-')) ? $timestamp : 'None';
}
关于date - 比较 Laravel 4 Blade 模板中的空日期碳对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25959324/