拉拉维尔雄辩“属于”关系书籍及其类别


Laravel Eloquent 'belongs to' relationship books and its category

我正在尝试打印"书籍"表中所有书籍的名称及其关联的类别。但它不显示任何内容或错误消息。

型号::书.php

class Book extends Eloquent{
    protected $table ='books';
    public function bookCat()
    {
        return $this->belongsTo('BookCategory');
    }
}

型号::书籍分类.php

class BookCategory extends Eloquent{
    protected $table ='book_categories';
}

控制器::路由.php

Route::get('/', function()
{
    $books = Book::all();
    return View::make('books')
    ->with('books', $books);
});

查看::书籍.刀片.php

@foreach ($books as $book)
<li>{{ $book->book_name }}</li>
- <small>{{ $book->bookCat }}</small>
@endforeach

表::书籍

(int)id, (string)book_name, (int)category_id

表::book_categories

(整数)id, (字符串)类别

将关系添加到 BookCategory。

class BookCategory extends Eloquent{
    protected $table ='book_categories';
    public function books() {
        return $this->hasMany('Book');
    }
}

您的本地密钥也与模型名称不匹配,因此您需要在关系中指定:

class Book extends Eloquent{
    protected $table ='books';
    public function bookCat()
    {
        return $this->belongsTo('BookCategory', 'category_id');
    }
}

您可能还希望急切地加载控制器中的类别,因为您的查询是针对书籍的:

$books = Book::with('bookCat')->get();