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 - 打印出表格及其相关类别的主要内容,如果未能解决你的问题,请参考以下文章