会員登録したユーザーが記事を投稿し、そのユーザーが退会を行った場合、記事の詳細ページに「このユーザーは退会しました」と表示させる仕組みにしてあるつもりなのですが・・・。
UsersController@show
public function show($id)
{
$user = User::find($id);
$lectures = $user->lectures()->orderBy('created_at', 'desc')->paginate(4);
~~$data = [~~ ~~'user' => $user,~~ ~~'lectures' => $lectures,~~ ~~]; return view('users.show', $data);~~ ~~}~~
当初、上記のUsersControllerを載せていましたが、今回の対象はLecturesControllerでした、申し訳ありません。
LecturesController@show
PHP
1public function show($id) { 2 3 $lecture = Lecture::find($id); 4 $user = User::find($id); 5 6 return view('lectures.show', [ 7 'lecture' => $lecture, 8 'user' => $user, 9 ]); 10 }
lectures/show.blade.php
HTML
1@extends('layouts.app') 2 3@section('content') 4 5<div class="container"> 6 <div class="head">レクチャー詳細</div> 7 8 <div class="row ml-3 mt-5 pt-4"> 9 10 <div class="col-9 mx-auto"> 11 <article class="cont_inner"> 12 @if ($lecture) 13 @if ($lecture->image) 14 <figure class="show_post_thumbnail"><div class="new_area-img text-center"><img class="show_image" src="{{ asset('storage/'.$lecture->image) }}"></div></figure> 15 @else 16 <figure class="show_post_thumbnail"><div class="new_area-img text-center"><img src="../img/noimage.gif"></div></figure> 17 @endif 18 <section class="post_meta-all multiline line-8"> 19 <div class="pick_title mb-2">{{ $lecture->title }}</div> 20 <time>{{ $lecture->updated_at }}</time> 21 <div> 22 @if ($lecture->category_name == 'ピッチング') 23 <span class="tag-pitching">{{ $lecture->category_name }}</span> 24 @elseif ($lecture->category_name == 'バッティング') 25 <span class="tag-batting">{{ $lecture->category_name }}</span> 26 @elseif ($lecture->category_name == '守備') 27 <span class="tag-fielding">{{ $lecture->category_name }}</span> 28 @elseif ($lecture->category_name == '走塁') 29 <span class="tag-running">{{ $lecture->category_name }}</span> 30 @elseif ($lecture->category_name == 'メンタル') 31 <span class="tag-mental">{{ $lecture->category_name }}</span> 32 @elseif ($lecture->category_name == 'その他') 33 <span class="tag-other">{{ $lecture->category_name }}</span> 34 @endif 35 @if ($user === null) 36 <span class="d-inline-block ml-2 small text-info">投稿者:このユーザーは退会しました</span></div> 37 @else 38 <span class="d-inline-block ml-2 small text-info">投稿者:<a href="{{ route('users.show', ['id' => $user->id]) }}">{{ $user->name }}</a></span></div> 39 @endif 40 <div class="mt-3 mb-5">{{ $lecture->content }}</div> 41 </section> 42 @endif 43 </article> 44 @if (Auth::id() === $lecture->user_id) 45 <div class="text-center mt-4"> 46 {!! Form::open(['route' => ['lectures.destroy', $lecture->id], 'method' => 'delete']) !!} 47 {!! Form::submit('削除する', ['class' => 'btn btn-danger btn-sm del_check']) !!} 48 {!! Form::close() !!} 49 </div> 50 @endif 51 </div> 52@endsection
それと、「投稿する」のページにアクセスすると、エラーが出るようになりました。
「このユーザーは退会しました」と出るものを修正しようと試みる前は問題なくアクセスできていたので、何かの拍子にそうなってしまったのかと思うのですが、ルーティングやコントローラーのcreate部分は特に触っていないですし、一応確認してみても、個人的には何らおかしいところは見受けられませんでした。
web.php
PHP
1// ユーザ機能 2Route::group(['middleware' => ['auth']], function () { 3 Route::resource('users', 'UsersController', ['only' => ['show']]); 4 Route::get('lectures/create', 'LecturesController@create')->name('lectures.create'); 5 Route::post('lectures', 'LecturesController@store')->name('lectures.store'); 6 Route::delete('lectures/{id}', 'LecturesController@destroy')->name('lectures.destroy'); 7 Route::delete('users/{id}', 'UsersController@destroy')->name('users.destroy'); 8});
LecturesController@create
PHP
1public function create() { 2 3 $lecture = new Lecture; 4 5 return view('lectures.create', [ 6 'lecture' => $lecture, 7 ]); 8 }
また、エラー内容を訳すと「非オブジェクトのプロパティ「user_id」を取得しようとしています」とのことで、tinkerにてあらためてLectureデータのカラムを確認しても、「user_id」は存在しています。
いろいろとすみません、よろしくお願いいたしますm(_ _)m
回答2件
あなたの回答
tips
プレビュー