【问题标题】:Laravel not able to display relationship name instead of id, even though defined as relationLaravel 无法显示关系名称而不是 id,即使定义为关系
【发布时间】:2021-12-25 12:21:53
【问题描述】:

我在我的 Laravel 应用程序中定义了书籍和作者之间的关系,如下所示:

我的图书模型:

class Book extends Model
{
    use HasFactory;

    protected $table = 'books';

    protected $fillable = [
        'ISBN', 'publisher_id', 'author_id', 'year', 'title', 'price',
    ];

    public function author()
    {
        return $this->belongsTo(Author::class);
    }
}

这是我的 BookController 索引:

public function index()
{
    return view('books.index', [
        'books' => DB::table('books')->paginate(15)
    ]);
}

所以现在我想在我的视图中显示作者姓名而不是 author_id:

@foreach ($books as $book)
    <tr>
        <td>{{ $book->author->name }}</td>
    </tr>
@endforeach

但我不断收到错误:

Undefined property: stdClass::$author (View: index.blade.php)

【问题讨论】:

    标签: laravel laravel-blade


    【解决方案1】:
    'books' => DB::table('books')->paginate(15)
    

    当您使用 db 时,您处理的是查询构建器,而不是 eloquent 查询构建器!

    您必须使用模型本身并加载关系:

    'books' => Book::with(['author'])->paginate(15);
    

    【讨论】:

      猜你喜欢
      • 2021-08-26
      • 2019-10-23
      • 2021-02-05
      • 2014-12-09
      • 2019-02-03
      • 2019-03-07
      • 2020-02-15
      • 1970-01-01
      • 2018-08-22
      相关资源
      最近更新 更多