前提
ここに質問の内容を詳しく書いてください。
larave詳細ページの表示が該当の詳細表示ともう一つ別の詳細表示がされてしまう。
実現したいこと
ここに実現したいことを箇条書きで書いてください。
該当の詳細のみ表示したい。
発生している問題・エラーメッセージ
特にエラー表示なし
エラーメッセージ
該当のソースコード
bookstable
<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; return new class extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('books', function (Blueprint $table) { $table->id(); $table->string('name'); $table->string('title'); $table->string('comments'); $table->unsignedInteger('num_books')->constrained(); $table->timestamps(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('books'); } };
usertable
<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; return new class extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('users', function (Blueprint $table) { $table->id(); $table->string('name'); $table->foreignId('author_id')->references ('id')->on('books')->cascadeOnDelete(); $table->foreignId('company_id')->references ('id')->on('companies')->cascadeOnDelete(); $table->string('email')->unique(); $table->timestamp('email_verified_at')->nullable(); $table->string('password'); $table->rememberToken(); $table->timestamps(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('users'); } };
companytable
<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; return new class extends Migration { /** * Run the migrations. * * @return void */ public function up() { //課題2用(トップページ) Schema::create('companies', function (Blueprint $table) { $table->id(); $table->string('company_name'); $table->timestamps(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('companies'); } };
user/show.blade.php
@extends('front.layouts.master') @section('title','トップページ | Laravel') @include('front.partials.header') @section('content','ユーザー詳細ページです。') @section('list') <h2 class="user">ユーザー詳細</h2> <ul class="user_list"> @foreach($user as $user) @if(empty($user->Book->num_books)) <li>著者はありません</li> @else <li class="user_item">{{$user->Book->name}}</li> <li class="user_item">所属会社:{{ $user->Company->company_name}}</li> @endif @endforeach </ul> <span class=""> <form method="post" action="{{ route('user.destroy', ['user_id'=>$user->id]) }}"> @csrf @method('DELETE') <button type="submit" class="btn" onClick="return confirm('削除してよろしいですか?');">削除</button> </form> </span> @endsection @section('link') <h2 class="user">著者一覧</h2> <ul class="user_list"> @foreach($books as $books) <li class="user_item"><a href="{{ route('book.show', ['book_id'=>$books->id]) }}" class="nav_link">{{$books->title}}</a></li> <li class="user_item">コメント:{{$books->comments}}</li> @endforeach </ul> @endsection @include('front.partials.footer')
book/show.blade.php
@extends('front.layouts.master') @section('title','トップページ | Laravel') @include('front.partials.header') @section('content') <h1>著者詳細ページです。</h1> <p><a href="{{ route('book.create') }}" class="nav_link">編集</a></p> @endsection @section('list') <h2 class="user">著者詳細</h2> <ul class="user_list"> @foreach($books as $books) <li class="user_item">{{$books->title}}</li> <li class="user_item">著者:{{ $books->name}}</li> <li class="user_item"> コメント:{{$books->comments}}</li> @endforeach </ul> <span class=""> <form method="post" action="{{ route('book.destroy', ['book_id'=>$books->id]) }}"> @csrf @method('DELETE') <button type="submit" class="btn" onClick="return confirm('削除してよろしいですか?');">削除</button> </form> </span> @endsection @include('front.partials.footer')
BookController
public function show(Book $book_id) { $books = Book::find($book_id); return view('front.book.show', compact('books')); }
UserController
public function show(User $user_id) { $user = User::find($user_id); $books = Book::all(); return view('front.user.show', [ 'user' => $user],[ 'books' => $books ]); }
試したこと
補足情報(FW/ツールのバージョンなど)
laravel8
ここにより詳細な情報を記載してください。
Booktableの場合
booktableのIDとbook_numの数が一致した場合は問題なく一つ表示されるが、
例えば、id->1 book_num->5となった場合は2つ詳細ページに該当の詳細と別に他の詳細も表示される。
Usertableの場合
usertableのidとcompany_id、author_idが恐らく繋がっている。
company_id->1 (user)id->3の場合、author_id->5 2つまたは3つ表示される
もし、
company_id->1 (user)id->1、author_id->1 と全ての番号が揃った場合問題なく表示される。
0 コメント