前提・実現したいこと
Laravelで下のbladeからweb.phpにルートするというボタンを作ったところ、下のようなエラーがコントローラー内で出てきました。
しかしこのweb.phpのrouteはエラーが発生しているメソッドは愚か、コントローラーさえ経由していません。
このようなエラーがなぜ出てしまうのでしょうか。
問題点と改善点をお願いいたします。
発生している問題・エラーメッセージ
Call to a member function comments() on null
該当のソースコード
blade
1<a href="{{route('create_post')}}"> 2 <button type="button" class="btn btn-primary btn-lg">新規投稿</button> 3</a>
php
1//web.php 2<?php 3 4use Illuminate\Support\Facades\Route; 5 6/* 7|-------------------------------------------------------------------------- 8| Web Routes 9|-------------------------------------------------------------------------- 10| 11| Here is where you can register web routes for your application. These 12| routes are loaded by the RouteServiceProvider within a group which 13| contains the "web" middleware group. Now create something great! 14| 15*/ 16 17Route::get('/', function () { 18 return view('welcome'); 19}); 20 21//ログイン確認不要 22Route::get('/mypage/{post_id}', 'PostController@edit')->name('edit_post'); 23Route::post('/mypage/{post_id}', 'PostController@editing'); 24 25Route::get('/mypage/{post_id}/{comment_id}')->name('comment_delete'); 26 27 28//ログイン確認必要 29// 30Route::get('/mypage', 'MypageController@index')->name('mypage'); 31//新規投稿 32//ここのルートを実行しました 33Route::get('/mypage/post', function(){ 34 return view('create_post'); 35})->name('create_post'); 36 37 38Auth::routes(); 39Route::get('/home', 'HomeController@index')->name('home'); 40
php
1//controller 2<?php 3 4namespace App\Http\Controllers; 5 6use Illuminate\Http\Request; 7use App\Post; 8use Illuminate\Support\Facades\Auth; 9use App\Comment; 10use App\User; 11 12class PostController extends Controller 13{ 14 // 15 public function index($id){ 16 $post = Post::find($id); 17 $comment = $post->comments()->get(); 18 19 return view('edit_post', [ 20 'id' => $id, 21 'post' => $post, 22 'comment' => $comment, 23 ]); 24 } 25 26 27 public function edit(Request $request ,$id){ 28 $post = Post::find($id); 29 $post->url = $request->input('url'); 30 $post->save(); 31 32 return redirect()->route('mypage'); 33 } 34} 35
php
1//Post.php 2<?php 3 4namespace App; 5 6use Illuminate\Database\Eloquent\Model; 7 8class Post extends Model 9{ 10// 11public function comments(){ 12return $this->hasMany('App\Comment'); 13} 14 15public function user(){ 16return $this->belongsTo('App\User'); 17} 18}
###追記
ターミナルでphp artisan route:list --name=create_postを実行した結果です。
+--------+----------+-------------+-------------+---------+------------+ | Domain | Method | URI | Name | Action | Middleware | +--------+----------+-------------+-------------+---------+------------+ | | GET|HEAD | mypage/post | create_post | Closure | web | +--------+----------+-------------+-------------+---------+------------+
回答5件
あなたの回答
tips
プレビュー