Erreur Laravel dans l'environnement de production : classe "App\Models\review" introuvable
P粉029057928
P粉029057928 2023-12-28 09:35:47
0
1
420

J'ai 3 modèles dans mon application Laravel : Films, utilisateurs, commentaires

Commentaires :

<?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);
    }
}

Films :

<?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');
    }
}

Utilisateur :

<?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);
    }
}

Requête invalide

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

Dans localhost, cela fonctionne bien. Mais après le déploiement dans digitalOcean, il renvoie "Class "AppModelsreview" introuvable"

J'ai essayé la console sur digitalOcean :

> 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.

Mais après avoir exécuté cette commande dans la même session :

Review::all()

Le film précédent ::has('review') a bien fonctionné.

Pourquoi est-ce ? Ai-je manqué quelque chose?

P粉029057928
P粉029057928

répondre à tous(1)
P粉124070451

Vous chargez probablement la classe à partir d'un système de fichiers sensible à la casse, c'est pourquoi ce problème est à l'origine du problème. Bien que les noms de classes PHP ne soient pas sensibles à la casse. Tel qu'ils apparaissent dans la déclaration, cela est considéré comme une bonne pratique

Vous devez modifier cette ligne :

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

à

return $this->hasMany(Review::class);
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal