Laravel 8仅在生产环境中未找到类

lf5gs5x2  于 2023-03-31  发布在  其他
关注(0)|答案(2)|浏览(160)

你好,我是Laravel和Eloquent的新手,我发现这个问题可以通过大小写敏感性问题来解决,但我找不到任何大小写问题。
Error message
Class "App\Models\TvEpisode" not found
我试图让UserTvEpisode列表查看它在localhost工作正常(使用Windows),但不是在生产服务器上抛出一个错误,类TvEpisode找不到.
用户有许多用户电视剧集。电视剧集有许多用户电视剧集。
文件名:TvEpisode.php,UserTvEpisode.php,TvEpisodeController.php
尝试获取列表的控制器:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\UserTvEpisode;
use App\Models\TvEpisode;
use Auth;

class TvEpisodeController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        $user = Auth::user();    
       
        $allTvEpisodes = UserTvEpisode::with('TvEpisode')->where("user_id", "=",  $user->id)->get();
        
        return view('tvepisode.index',[
            'allTvEpisodes' => $allTvEpisodes
        ]);
    }
}

UserTvEpisode模型:

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use App\Models\TvEpisode;

class UserTvEpisode extends Model
{
    use HasFactory;
    protected $table = 'user_tv_episodes';

    protected $primaryKey = 'id';

    public $timestamps = true;

    protected $dataFormate ='h:m:s';

    public function TvEpisode(){
        return $this->belongsTo(TvEpisode::class)->withDefault();;
    }
    public function user(){
        return $this->belongsTo(User::class);
    }

}

TvEpisode模型

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use App\Models\UserTvEpisode;

class TvEpisode extends Model
{
    use HasFactory;
    protected $table = 'tv_episodes';

    protected $primaryKey = 'id';

    public $timestamps = false;

    protected $dataFormate ='h:m:s';

    public function userTvEpisodes(){
        return $this->hasMany(UserTvEpisode::class);
    }
}

我错过了什么?

kupeojn6

kupeojn61#

如果您确定没有大小写敏感问题,您可以尝试以下几种方法:
1.检查类的命名空间是否正确。类是否在正确的目录中,模型是否在App\Models中,控制器是否在App\Http\Controllers中?如果不正确,请移动类或更改命名空间。
1.是否确定服务器上存在该文件?服务器上的项目是否与您的本地项目保持最新?
1.在服务器上运行composer dump-autoload以重新生成项目中使用的类列表。
我相信上面的一个解决方案可以解决你的问题。

wtzytmuj

wtzytmuj2#

原因可能是OPCache(如果你在生产中使用它),你刚刚上传了新的文件到服务器,新的PHP类还没有索引,所以composer dump-autoload对你没有帮助。你必须重新启动你的php服务来重新索引OPCache中的所有PHP示例(这个例子是Ubuntu和Nginx的php 8.1 fpm):

sudo service php8.1-fpm restart

也要确保-重新启动您的Web服务器(例如nginx)

sudo service nginx restart

相关问题