我正在学习laravel,我想尝试通过通配符显示一本书,但它显示错误

时间:2016-05-18 07:52:23

标签: php laravel

这是我的路线

Route::get('showbooks', 'AdminController@show');
Route::get('showbooks/{book_id}', 'AdminController@singleBook');

这里是所有和单书的方法

public function show()
    {
        $allBooks = Book::all();
        return view ('admin.showbooks', compact('allBooks'));
    }

    public function singleBook($book_id)
    {
        $book = Book::find($book_id);
        return view ('admin.singlebook', compact('book'));
    }

这里是单本书的链接

@foreach($allBooks as $book)
                            <h2><a href="{{ url('showbooks', $book->book_id) }}"> Book Id is: {{ $book->book_id }}</a></h2>

                            <h4>Book Title is: {{ $book->title }}</h4>
                        @endforeach

这是我的单一图书视图

<div class="col-lg-9">
                    <h1>{{ $book->book_id }}</h1>
                    <h3>{{ $book->tile }}</h3>
                </div>

1 个答案:

答案 0 :(得分:3)

您应该在模型中设置主键。因为默认情况下,主键被视为“id”。

这就是你写作时的原因

$book = Book::find($book_id);

laravel使sql成为

where books.id=blabla

按以下方式更改模型:

class Book extends Eloquent {

    protected $primaryKey = 'book_id';

}