私は3経路: 1)/ catalog/authorsとデータベースのすべての著者のリストを表示するコントローラメソッド 2)/ catalog/authors/{author }私がidに渡すと、著者の名前を表示するコントローラのメソッド。 これらの2つのI はですが、3: 3)/ catalog/authors/{author}/{book}は動作しません。問題は、著者の最初の本を印刷したいということです与えられた著者)モデル間 の関係は以下のとおりです。経路の最後のパラメータに渡す方法
著者-ブック1:M
方法冊()とそれぞれの著者()。
ルート:/ catalog/authors/1/1 Works、BUT on/catalog/authors/1/2これは、全く同じ結果(例えば、/ catalog/authors/1/1)。著者の第2冊データベースでは指定されていませんが、できるだけ明確に説明しようとしました。
一般に、このチェックのためにデータベースにクエリがあるかどうかはわかりません。
ルート:
Route::get('/catalog/authors', '[email protected]');
Route::get('/catalog/authors/{author}', '[email protected]');
Route::get('/catalog/authors/{author}/{book}', '[email protected]');
コントローラー:
class AuthorsController extends Controller
{
public function index()
{
$authors = Author::all();
return view('author.index', compact('authors'));
}
public function show(Author $author)
{
return view('author.show', compact('author'));
}
public function display(Author $author, Book $book)
{
if (empty($book)) {
return 'Book doesnt exist';
}
return view('author.books', compact('book', 'author'));
}
}
ビュー:
{{$book->title}}
モデル:
class Author extends Model
{
public function books()
{
return $this->hasMany(Book::class);
}
}
class Book extends Model
{
public function author()
{
return $this->belongsTo(Author::class, 'author_id');
}
}
私はこのようなことをしなければならないことを知っています: $ bookId = $ author-> books() - > first() - > id;
BUT私はこれをどこに追加しなければならないのかわかりません。途中で? これを{book}にどのように転送できますか?
何が '{{$ book->タイトル}}ことshlould? – jaysingkar
ここにチュートリアルを進めていますか?背景情報のために参照する可能性があります。データベースのクエリがあるかどうかわからないのはどういうわけかわかりません。あなたはこのコードを自分で書きませんでしたか? – Lewis42
@jaysingkar 1/1のようなもの –