Saya mempunyai 3 model dalam aplikasi Laravel saya: Filem, pengguna, ulasan
Komen:
<?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); } }
Filem:
<?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'); } }
Pengguna:
<?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); } }
Pertanyaan tidak sah
$movies = Movie::has('review')->with('review.user')->get();
Dalam localhost ia berfungsi dengan baik. Tetapi selepas digunakan dalam digitalOcean ia mengembalikan "Kelas "AppModelsreview" tidak ditemui"
Saya mencuba konsol pada 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.
Tetapi selepas menjalankan arahan ini dalam sesi yang sama:
Review::all()
Filem sebelumnya::has('review') berfungsi dengan baik.
Kenapa ni? Adakah saya terlepas sesuatu?
Anda berkemungkinan besar memuatkan kelas daripada sistem fail sensitif huruf besar-besaran, itulah sebabnya isu ini menyebabkan masalah. Walaupun nama kelas PHP tidak sensitif huruf besar. Seperti yang terdapat dalam kenyataan, ini dianggap sebagai amalan yang baik
Anda perlu menukar baris ini:
kepada