yuktkhs
@yuktkhs (yuki takahashi)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

Class 〇〇 not foundを解決したい[heroku,laravel]

解決したいこと

現在、簡単なメモアプリを制作しています。
アプリをherokuデプロイ後、メモ登録ページに遷移しようとした際に500エラーが発生しました。
エラーログを見ると、Class 'App\Models\Category'とエラーメッセージが出たので、Categoryモデルに問題がありそうなのはわかるのですが解決方法がわからないため、知恵をお貸しいただきたいです。

開発環境

バックエンド
PHP:7.3.11
Laravel:7.30.4
開発環境
MAMP/MySQL(MAMP環境)
インフラ
Heroku

発生している問題・エラー

出ているエラーメッセージを入力

画面

500エラーの発生

image.png

エラーを発生させた

class 'App\Models\Category' not foundとエラーが出た
https://gyazo.com/ad681a43276ad26e44fb1364cc4fceb5

2021-05-06T11:02:23.563195+00:00 app[web.1]: [06-May-2021 20:02:23 Asia/Tokyo] [2021-05-06 20:02:23] production.ERROR: Class 'App\Models\Category' not found {"userId":1,"exception":"[object] (Error(code: 0): Class 'App\\Models\\Category' not found at /app/app/Http/Controllers/PostController.php:33)

自分で試したこと

モデル名、クラス名、コントローラー名の確認

Class 'App\\Models\\Category' not found at /app/app/Http/Controllers/PostController.php:33とあったのでPostControllerの33行目とモデルを確認してみました。

PostController.php
<?php

namespace App\Http\Controllers;
use App\Models\Category;
use App\Models\Post;
use App\Models\User;
use Auth;
use Illuminate\Http\Request;

class PostController extends Controller
{
    public function create()
    {

        $categories = Category::all();
        return view('post.create', ['categories' => $categories]);
    }
Category.php
<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Category extends Model
{
    protected $guarded = array('id');
    public function posts(){
        return $this->hasMany(Post::class);
    }
}

DB構成も確認してみました。
categoriesテーブル
image.png

自分で試したこと2

$ composer dump-autoload

下記を参考に
https://teratail.com/questions/319384

0

2Answer

PostController.phpでCategoryを参照するにはrequire_once 'Category.php'; が必要なのでは?

0Like

Comments

  1. @yuktkhs

    Questioner

    ご回答ありがとうございます。
    require_once 'Category.php';
    また
    require_once(dirname(__FILE__)."../Models/Category.php");
    をPostControllerに追記しましたがエラーが出てしまいました...

laravel.logを見ましたか?
こういう時はapp\Models\Category.phpにグラマーエラーがある場合が多いです。

0Like

Comments

  1. @yuktkhs

    Questioner

    ご回答ありがとうございます。
    エラーログ確認しました。ローカル環境ですとエラーが出ずに問題なく動きます。
    モデル名の大文字と小文字のチェック、ディレクトリパスは`App\Models`内にCategory.phpが存在しています。

Your answer might help someone💌