FatalErrorException在字符串Laravel 5.4上调用成员函数diffForHumans()

时间:2018-07-28 09:42:04

标签: php laravel-5.4

如何在Laravel 5.4中修复此FatalErrorException调用到成员函数diffForHumans()的字符串上?

使用函数“ diffForHumans()”时显示错误。

总体来说,没有这个,一切都会好起来的。

控制器代码

<?php

  namespace App\Http\Controllers;
  use Illuminate\Http\Request;
  use Auth;
  use DB;
  Use App\Model\Books;
  use App\Model\ClassLevel;

 class BookController extends Controller{
 public function showBooks()
 {
    $books = DB::table('books as b')
        ->join('classes as c', 'b.class_ref_id', '=', 'c.id')
        ->join('users as u', 'b.created_by', '=', 'u.id')
        ->select('u.fullname', 'c.engclassname', 'b.book_name','b.created_at','b.updated_at','b.id')
        ->get();
    return view('admin.book.view-book',compact('books'));
}

查看页面代码

@foreach($books as $d)
   <tr>
       <td>{{$d->created_at->diffForHumans()}}</td>
    </tr>
@endforeach

2 个答案:

答案 0 :(得分:0)

我假设created_at将是日期,但是它是一个字符串(“ stringOfCharacters” ...,除非您已制成对象:)来调试try:

var_dump($ d)-应显示其对象或数组。 您使用$ d ['created_at]访问数组 如果其对象使用$ d-> created_at

或您的created_at字段

您也可以尝试将对象强制转换为数组,以便...

$ arrayOfObj =(数组)$ d;

var_dump($ d ['created_at'])

如果它不是一个对象,而是一个字符串,那么(或多或少)显然将无法工作,因为字符串没有方法/功能:)

答案 1 :(得分:0)

您要返回的视图是一个通用集合,为了使用它,它必须是ORM的表示形式。 (与此相关的ORM集合)

return Books::join('classes', 'books.class_ref_id', 'classes.id')
        ->join('users', 'books.created_by','users.id')
        ->select('users.fullname', 'classes.engclassname', 'books.book_name','books.created_at','books.updated_at','books.id')
        ->get();

这将输出包含您所需信息的Book集合。