【问题标题】:Laravel error: Call to a member function format() on stringLaravel 错误:调用字符串上的成员函数 format()
【发布时间】:2017-03-24 19:43:51
【问题描述】:

我正在使用 Laravel 5.3

articles中有一个字段expired_at

public function store(Request $request)
{
    $data=[
         'expired_at'=>Carbon::now()->addDays(30)->endOfDay()
    ];
    $article=Article::create(array_merge($request->all(),$data));

    return redirect('/artilces');
}

查看:

{{$article->expired_at->format('Y-m-d')}}

错误:

在字符串上调用成员函数 format()(查看:D:\wnmp\www\laravel-5-3-dev\resources\views\artiles\index.blade.php)

为什么?

【问题讨论】:

    标签: php laravel


    【解决方案1】:

    在您的 Article 类中添加以下属性:

    /**
     * The attributes that should be mutated to dates.
     *
     * @var array
     */
    protected $dates = ['expired_at'];
    

    Docs

    【讨论】:

    • 如果您通过Eloquent 构建查询,那么$dates 有效。但是,如果您使用Query Builder,那么它不起作用,您必须使用@NazmulHazan 给出的解决方案。我还没有用 Raw query 尝试过,但是,我相信它也不会适用。
    • 它不适用于我的 IDK。我已经添加了protected $dates = ['my_column']; 并运行migrate:fresh,但仍然得到同样的错误。请问有什么想法吗?
    【解决方案2】:

    我认为是这样。它不会抛出错误

    {{ Carbon\Carbon::parse($article->expired_at)->format('Y-m-d') }}
    

    【讨论】:

    • 这是唯一的工作方式。接受的答案不起作用我不知道为什么
    • 但是当该列为空时,它会在今天前 1 天返回。例如,该列为空,今天是 2020 年 7 月 25 日,因此返回 2020 年 7 月 24 日
    【解决方案3】:

    如果您使用 DB:: 来检索复杂数据,则不能使用 mutators。 在这种情况下,我使用这个:

    {{ date('m-Y', strtotime($hora->Fecha)) }}
    

    或者

    {{ date('m-Y', strtotime($hora ?? ''->Fecha)) }}
    

    其中“Fecha”是一个日期时间值。

    【讨论】:

    • 比上面的答案更容易阅读,尽管它们都有效。谢谢
    【解决方案4】:

    在模型的 $dates 上声明的字段。

    试试这个:

    可选($article->expired_at)->格式('Y-m-d')

    【讨论】:

      【解决方案5】:

      在 User.php 或您的模型中如何处理:

      protected $casts = [
         'last_active_at' => 'datetime',
      ];
      

      【讨论】:

        【解决方案6】:

        您需要将expired_at 转换为Eloquent Model 中的日期时间。您收到此错误是因为您在 String 而不是 DateTime 实例上调用 format 函数。

        【讨论】:

          猜你喜欢
          • 2016-05-10
          • 1970-01-01
          • 2018-10-05
          • 1970-01-01
          • 1970-01-01
          • 2019-06-20
          • 2017-12-17
          • 2022-11-10
          相关资源
          最近更新 更多