Heim  >  Fragen und Antworten  >  Hauptteil

Laravel-Fehler in der Produktionsumgebung: Klasse „App\Models\review“ nicht gefunden

Ich habe 3 Modelle in meiner Laravel-Anwendung: Filme, Benutzer, Kommentare

Kommentare:

<?php

namespace AppModels;

use IlluminateDatabaseEloquentFactoriesHasFactory;
use IlluminateDatabaseEloquentModel;

class Review extends Model
{
    use HasFactory;

    protected $hidden = ['user_id','movie_id','created_at','updated_at'];

    public function movie(){
        return $this->belongsTo(Movie::class);
    }

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

Filme:

<?php

namespace AppModels;

use IlluminateDatabaseEloquentFactoriesHasFactory;
use IlluminateDatabaseEloquentModel;

class Movie extends Model
{
    use HasFactory;

    protected $hidden = ['created_at','updated_at'];

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

    public function getAvg()
    {
        return $this->review()->average('rating');
    }

    public function count()
    {
        return $this->review()->count();
    }

    public function getBestRating()
    {
        return $this->review()->max('rating');
    }

    public function getWorstRating()
    {
        return $this->review()->min('rating');
    }
}

Benutzer:

<?php

namespace AppModels;

// use IlluminateContractsAuthMust VerifyEmail;
use IlluminateDatabaseEloquentFactoriesHasFactory;
use IlluminateFoundationAuthUser as Authenticatable;
use IlluminateNotificationsNotifiable;
use LaravelSanctumHasApiTokens;
use TymonJWTAuthContractsJWTSubject;

class User extends Authenticatable implements JWTSubject
{
    use HasApiTokens, HasFactory, Notifiable;

    public function review()
    {
        return $this->hasMany(Review::class);
    }
}

Ungültige Abfrage

$movies = Movie::has('review')->with('review.user')->get();

In localhost funktioniert es gut. Aber nach der Bereitstellung in digitalOcean wird „Klasse „AppModelsreview“ nicht gefunden“ zurückgegeben

Ich habe die Konsole auf digitalOcean ausprobiert:

> Movie::has('review')->get()
[!] Aliasing 'Movie' to 'AppModelsMovie' for this Tinker session.

 ERROR Class "AppModelsreview" not found in vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasRelationships.php on line 775.

Aber nachdem dieser Befehl in derselben Sitzung ausgeführt wurde:

Review::all()

Der vorherige Movie::has('review') hat gut funktioniert.

Warum ist das so? Habe ich etwas verpasst?

P粉029057928P粉029057928319 Tage vor400

Antworte allen(1)Ich werde antworten

  • P粉124070451

    P粉1240704512023-12-29 00:44:04

    您很可能从区分大小写的文件系统加载类,这就是这个问题导致问题的原因。虽然 PHP 类名不区分大小写。正如它们在声明中出现的那样,这被认为是良好的做法

    您需要更改此行:

    return $this->hasMany(review::class);

    return $this->hasMany(Review::class);

    Antwort
    0
  • StornierenAntwort