Laravel 4 - 打印出表格及其相关类别

Posted

技术标签:

【中文标题】Laravel 4 - 打印出表格及其相关类别【英文标题】:Laravel 4 - Print out a table and its associated categories 【发布时间】:2015-03-22 01:47:57 【问题描述】:

我正在尝试打印“books”表和“book_categories”表中的所有书名及其相关类别。

但是我收到了这个错误:

试图获取非对象的属性(查看:books.blade.php

我的两个表模型的名称:

Book.php BookCategory.php

我的“书”桌结构:

id(int), book_name(string), book_category_id(int)

我的“book_categories”表结构:

id(int), book_category(string)

控制器:

public function getBooks()

  $books = Book::all();

  return View.make('book.books')->with('books', $books);

books.blade.php

@foreach ($books as $book)
<p> $book->book_name  </p>
<p> BookCategory::find($book->id)->book_category </p>
@endforeach

只要这行代码就可以正确打印出 JSON 信息:BookCategory::find($book-id)

但是当我使用

->first()

->book_category

无法访问其内容。

【问题讨论】:

你是否在你的模型中建立了关系? 【参考方案1】:

class Books extends \Model 

    $table = 'books';

    public function categories()
    
        return $this->belongsTo('BookCategory');
    


class BookCategory extends \Model 

    $table = 'book_categories';

    public function books()
    
        return $this->hasMany('Books', 'book_category_id');
    


public function getBooks() 

    // Always eagerload your relation to prevent n+1 issue
    $books = Books::with('categories')->all();

    return View::make('book.books')->with('books', $books);


@foreach($books as $book)
     $book->book_name
     $book->categories->book_category 
@endforeach

进一步阅读:

http://laravel.com/docs/4.2/eloquent#querying-relations http://daylerees.com/codebright/eloquent-relationships

【讨论】:

以上是关于Laravel 4 - 打印出表格及其相关类别的主要内容,如果未能解决你的问题,请参考以下文章

Laravel - 如何将表格从帖子连接到类别

相关模型 eloquent laravel 中的自定义查询

laravel 雄辩的多个表 where 条件

如何在 Laravel 中打印出包含多个产品的所有订单?

页面的类别信息

Laravel 5 中相关产品数量的产品类别列表