Laravel ユーザIDを取得しようとしたらエラーが出た話


目的

  • 初歩的であるがこれからもうっかり発生させそうなエラーなので解決方法を含めてまとめる

実施環境

  • ハードウェア環境
項目 情報 備考
OS macOS Catalina(10.15.3)
ハードウェア MacBook Air (11-inch ,2012)
プロセッサ 1.7 GHz デュアルコアIntel Core i5
メモリ 8 GB 1600 MHz DDR3
グラフィックス Intel HD Graphics 4000 1536 MB
  • ソフトウェア環境
項目 情報 備考
PHP バージョン 7.4.3 Homwbrewを用いて導入
Laravel バージョン 7.0.8 commposerを用いて導入
MySQLバージョン 8.0.19 for osx10.13 on x86_64 Homwbrewを用いて導入

エラー内容

  • 下記の手順にしたがってAuthによるログイン機能を実装した。
  • コントローラで現在ログインしているユーザのユーザIDを取得し紐づいているビューファイルで表示する処理を記載した。
  • 下記にコントローラの内容を記載する。(名前領域userにあるhome.blade.phpのビューファイルを呼び出している。)

    <?php
    
    namespace App\Http\Controllers;
    
    use Illuminate\Http\Request;
    
    class UserController extends Controller
    {
        public function home() {
            $user_id = Auth::id();
            return view('user.home', compact('user_id'));
        }
    }
    
  • ブラウザで確認したところ下記のエラーが出力された。

    • 「Error Class 'App\Http\Controllers\Auth' not found」

  • not foundと言われているので確認してもAuthディレクトリは存在していた。

原因

  • コントローラにてAuth::id();を用いてログイン中のユーザIDを取得する場合は当該コントローラの冒頭に下記の記載がないとユーザIDを取得するとこはできない。

    use Illuminate\Support\Facades\Auth;
    

解決方法

  1. コントローラのの冒頭部分にuse Auth;の記載を追加する。

    • 下記に追加したあとのコントローラファイルの例を記載する。

      <?php
      
      namespace App\Http\Controllers;
      
      use Illuminate\Http\Request;
      
      //下記の内容を追記する
      use Illuminate\Support\Facades\Auth;
      
      class UserController extends Controller
      {
          public function home() {
              $user_id = Auth::id();
              return view('user.home', compact('user_id'));
          }
      }