Ранее я вручную удалил некоторые файлы моделей в приложении * и создал другие, просто удалив символ «s», потому что laravel по умолчанию может распознавать модели по имени, а модели по стандарту Laravel должны быть написаны нормально, а не во множественном числе.
Перед удалением моделей, которые я создал с помощью php artisan make:model Buildings -m
Новая модель, которую я создал после того, как удалил модель (зданий), — это php artisan make:model Building. Обратите внимание, что я только что создал новую модель без «s».
Теперь в моей модели пользователя я создал метод:
public function UserAssignedBuilding(){
return $this->hasManyThrough('App\Building','App\Area','user_id','area_id');
}
Файл модели Building.php
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Building extends Model
{
protected $table = 'buildings';
public function areas(){
$this->belongsTo('App\Area');
}
}
Файл модели Area.php:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Area extends Model
{
protected $fillable = [
'name'
];
public function users(){
return $this->belongsToMany('App\User','area_user','area_id','user_id');
}
public function buildings(){
return $this->hasMany('App\Building');
}
}
В php artisan, когда я запускаю следующую команду, чтобы получить назначенные пользователем здания:
>>> User::find(4)->UserAssignedBuilding
PHP warning: include(C:\xampp\htdocs\hse\vendor\composer/../../app/Buildings.php): failed to open stream: No such file or directory in C:\xampp\htdocs\hse\vendor\composer\ClassLoader.php on line 444
Похоже, что ошибка заключается в том, что фреймворк пытается загрузить файл модели (Buildings.php), который я уже удалил и вместо этого создал (Building.php).
Я запускаю следующее:
C:\xampp\htdocs\hse>composer dumpautoload
Generating optimized autoload files
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover
Discovered Package: fideloper/proxy
Discovered Package: laravel/tinker
Package manifest generated successfully.
Но проблема не исправлена
Также пытался получить строки зданий, другая ошибка показывает: -
>>> Building::all()
PHP Fatal error: Class 'Building' not found in eval()'d code on line 1