Heim > Fragen und Antworten > Hauptteil
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粉1240704512023-12-29 00:44:04
您很可能从区分大小写的文件系统加载类,这就是这个问题导致问题的原因。虽然 PHP 类名不区分大小写。正如它们在声明中出现的那样,这被认为是良好的做法
您需要更改此行:
return $this->hasMany(review::class);
至
return $this->hasMany(Review::class);