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

标签 php mysql laravel laravel-blade

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

但是我收到了这个错误:

Trying to get property of non-object (View: books.blade.php)

我的两个表模型的名称:

  • Book.php
  • BookCategory.php

我的'books'表结构:

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

我的“book_categories”表结构:

id(int), book_category(string)

Controller :

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

无法访问其内容。

最佳答案

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

关于php - Laravel 4 - 打印表格及其相关类别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28102837/

相关文章:

php - YII框架正在缓存css文件

c# - 将 C# 中的 AES 加密 token 代码转换为 php

php - 删除除数字、字母 x 和加号以外的所有内容(正则表达式、PHP)

php - 从 2 个不适用于 php mysql 的表中选择

javascript - 在 Laravel Blade 中循环并显示图像,更改旧的 Angular 代码

php - 亚马逊 S3-x-amz-meta

php - 如何查看所有团队成员的帖子

php - 自动获取 : name_of_table. name_of_row 形式的列名称

php - 如何将 php 7.0 更新为 php 7.1+ ubuntu

laravel - 在 laravel 7x 的路径中找不到文件