【问题标题】:Use carbon on Views laravel在视图 laravel 上使用碳
【发布时间】:2015-01-26 15:52:34
【问题描述】:

我想在视图上使用 Carbon,我将它包含在视图文件的顶部,但它不起作用,我正在这样做。

 <?php use carbon/carbon;?>
 @extends('main_layout')

      @foreach ($myquery as $mytask) 
                <tr>

                <td >
                 {{($mytask->firstname)}}
                </td>

                 <td >
                        {{($mytask->lastname)}}
                </td>
                    <td>
               {{($mytask->logon)}}
                    </td>

 @section('content')
 @stop

我只是得到错误。我想使用 carbon 将 {{($mytask->logon)}} 转换为人类可读的格式

【问题讨论】:

  • -&gt;logon 是什么?它是否在您的 Eloquent 模型中使用 getDates() 或访问器突变为碳?
  • 解决办法是什么?
  • 你不能通过控制器传入一个碳对象变量吗?它会让你一团糟。

标签: php laravel time eloquent


【解决方案1】:

编辑 2021-10-29

It appears that Laravel 现在鼓励对这个问题使用日期转换:

/**
 * The attributes that should be cast.
 *
 * @var array
 */
protected $casts = [
    'created_at' => 'datetime:Y-m-d',
];

原答案

我会添加一些引用 Laravel Documentation 的内容,供 Google 员工添加如何将 SQL 日期时间字段转换为 Carbon 对象:

在您的模型中:

protected $dates = ['created_at', 'updated_at', 'disabled_at','mydate'];

这个数组上的所有字段都可以在你的视图中通过 Carbon 函数自动访问,例如:

{{ $article->mydate->diffForHumans() }}

【讨论】:

  • 注意提示!
  • 甜蜜。这比在控制器中处理要好
  • 非常喜欢简洁明了。
【解决方案2】:

您无需在视图中添加碳的使用声明。只要确保$mytask-&gt;logon 确实是一个碳对象并使用format() 方法将其变成一个字符串

{{ $mytask->logon->format('Y/m/d') }}

编辑:

如果$mytask-&gt;logon 是碳对象,请使用:

 {{ $mytask->logon->diffForHumans() }}

如果它仍然是一个字符串使用:

{{  \Carbon\Carbon::createFromTimeStamp(strtotime($mytask->logon))->diffForHumans()‌​ }}

我建议在控制器或视图编辑器中执行此操作以保持视图整洁。

【讨论】:

  • 是的先生,$mytask->登录是时间戳格式,但我想做的是使用秒、分钟或小时前。例如 5 分钟前,一个小时前。就像那个先生
  • 如果$mytask-&gt;logon 是一个碳对象,使用:$mytask-&gt;logon-&gt;diffForHumans() 如果它仍然是一个字符串,使用:\Carbon\Carbon::createFromTimeStamp(strtotime($mytask-&gt;logon))-&gt;diffForHumans();。我会建议在控制器中执行此操作,或者在视图编辑器中执行此操作以保持视图整洁。
  • 当我在视图中使用任何上述答案时,只会变得越来越糟糕。 :(
【解决方案3】:

刀片使用:

{{ \Carbon\Carbon::parse($mytask->logon)->diffForHumans() }}

输出:对于一天前的任务

1 day ago

您可以阅读 Carbon 的更多人类可读时间 - Carbon Difference For Humans

【讨论】:

    【解决方案4】:

    只需复制粘贴到您的模型中

    public function getCreatedAtAttribute($value)
    {
        $date = new Carbon($value);
        return $date->toDayDateTimeString();
    }
    

    并像您在视图中通常调用的那样调用-&gt;created_at

    别忘了使用 Carbon 类模型

    【讨论】:

      【解决方案5】:

      对于 laravel 5 请注意,如果您需要进行一些自定义突变,请将其放入您的模型中。

       /**
       * The string attribute that should be cast to custom carbon date.
       *
       * @var array
       */
      
      public function getTimeAttribute()
      {
           return Carbon::createFromTimestampUTC($this->attributes['time']/1000);
      }
      

      不用担心,您仍然可以访问原始属性。

          New = {{ $event->time }} Original = {{ $event->getOriginal('time')}}
      

      希望这对无法使用上述标准方式的人有所帮助。

      【讨论】:

      • 这很有帮助
      猜你喜欢
      • 2016-05-11
      • 1970-01-01
      • 2016-02-07
      • 2018-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-26
      相关资源
      最近更新 更多