【Laravel6でエラーが出た】BadMethodCallExeption: Method Illuminate¥Routing¥Rout::get does not exist.


【Laravel6でエラーが出た】BadMethodCallExeption: Method Illuminate¥Routing¥Rout::get does not exist.

使用環境

  • windows 10 Home(COREi7)
  • XAMPP 7.3.18
  • Laravel 6

背景

Laravel5.7入門の動画に沿ってLaravel6の学習をしていた。
しかしながら、ところどころ違うところも出てきており、極力、ファイルをいじらずに進め、php artisan serveをしようとしたところエラーが発生。

routesディレクトリ中のweb.phpを見てみると、以下のようになっていた。

<?php

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

use App\Http\Controllers\TaskController;
use Illuminate\Routing\Route;


Route::get('/', function () {
    return redirect('/tasks');
});

Route::get('/tasks', 'TaskController@index');
Route::post('/tasks', 'TaskController@store');
Route::delete('/tasks/{task}', 'TaskController@destroy');


  • 解決案1

エラー文そのまま検索してみるとちょうど同じ状況に陥った人の記事を発見できた。
https://qiita.com/tatuki81/items/6384f21382c17200de0d

早速、同じことをしてみる。

use App\Http\Controllers\TaskController;
use vendor\laravel\framework\src\Illuminate\Routing;

しかし、エラーは解決できず...

まずは以下のように。

use App\Http\Controllers\TaskController;
use Illuminate\Support\Facades\Route;

すると、php artisan serveできた。

内容を見てみると同じRoute.phpというファイル名でも中身は全然違う。

Illuminate\Support\Facades内のRoute.phpは以下のような内容。

<?php

namespace Illuminate\Support\Facades;

/**
 * @method static \Illuminate\Routing\Route fallback(\Closure|array|string|callable|null $action = null)
 * @method static \Illuminate\Routing\Route get(string $uri, \Closure|array|string|callable|null $action = null)
 * @method static \Illuminate\Routing\Route post(string $uri, \Closure|array|string|callable|null $action = null)
 * @method static \Illuminate\Routing\Route put(string $uri, \Closure|array|string|callable|null $action = null)
 * @method static \Illuminate\Routing\Route delete(string $uri, \Closure|array|string|callable|null $action = null)


わかったこと

原因は指定したファイルにメソッド(getとか使えるように書いてある)が入っていないよ!ということだったらしい。
メソッドが入っているIlluminate\Support\Facades内のRoute.phpを使うよという風にしたことでエラーが解除されたみたい。