date - 比较 Laravel 4 Blade 模板中的空日期碳对象

标签 date laravel laravel-4 eloquent

我从数据库中得到一个空日期并像这样在模型中转换为碳对象......

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/

相关文章:

php - 在 Laravel 配置文件中使用命名路由

php - Laravel-4 Carbon 在格式化日期时抛出 toString() 错误

sql - Oracle:相对日期和日期分区表

java - 这与只返回 new System.currentTimeMillis() 有什么不同吗?

php - 比较 laravel 中的两个集合数组

php - 如何在 helper 类中使用 laravel Eloquent 模型

php - Laravel 4 - 一个表单中的两个提交按钮,并且两个提交都由不同的操作处理

r - 以小数秒为单位的R中的日期时间转换

Java - 检查两个日期是否相等

php - SQLSTATE[42S22] : Column not found: 1054 Unknown column 'title' in 'field list' in Laravel 5. 4