查找当前的模型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

使用 PHP 和 Kohana 3,可以递归地查找和输出任何模型的关系吗?

Laravel - 与关系的收集需要很多时间

Eloquent与条件有很多关系

元素ID命名规范