查找当前的模型ID(有很多关系)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了查找当前的模型ID(有很多关系)相关的知识,希望对你有一定的参考价值。
我有一个laravel应用程序,允许用户添加评论到书。
我的路线是:
Route::get('/books/{book}/addreview', 'ReviewController@create');
Route::post('books/{book}/review', 'ReviewController@store');
我的评论控制器看起来像:
public function create(Book $book) {
return view('/reviews/create');
}
public function store(Book $book){
$this->validate(request(),[
'title' => 'required',
'body' => 'required'
]);
Review::create([
'title'=>request('title'),
'body'=>request('body'),
'user_id'=>auth()->id(),
'book_id'=>$book->id
]);
// return redirect('/books');
}
但是,我得到'Undefined variable:book' - 所以我找不到当前的书ID。我怎样才能找到当前的书籍ID并将其传递给视图?
在审查控制器:
public function create(Book $book) {
return view('reviews.create', compact('book'));
}
在视图中:
{{ $book->id }}
您必须发送数据才能查看。
public function create(Book $book) {
return view('reviews.create', ['book' => $book]);
}
您没有向视图传递任何内容,您需要将数据显式传递给它以便可以使用它:
return view('reviews.create', ['book' => $book]);
然后在你看来,如果你可以使用qazxsw poi访问书籍:
$book->id
Book ID is {{ $book->id }}.
在你的控制器中渲染// here I add some custom name to this route which will help to generate
// a corresponding URL in the view by passing this name
// route('routename')
Route::get('/books/{book}/addreview', 'ReviewController@create')->name('review.create');
Route::post('/books/{book}/review', 'ReviewController@store')->name('review.store');
视图你必须传递对应于你的路线中的当前模型绑定的review.create
像这样
$book
在创建表单时的相应视图中,您必须像这样指定public function create(Book $book){
return View::make('reviews.create', ['book' => $book]);
}
属性
action
你应该添加<form action={{ route('review.store', $book)}} method="post">
{{ csrf_field}}
而不是公共功能商店(Book $ book)
因为您没有共享您的Book请求文件。
以上是关于查找当前的模型ID(有很多关系)的主要内容,如果未能解决你的问题,请参考以下文章
CakePHP - 在模型中查找没有 hasMany 关系的 hasMany 关联?
没有使用 navController.currentDestination?.id 获取当前片段 ID