【发布时间】:2019-04-04 15:22:09
【问题描述】:
我之前手动删除了 App* 中的一些模型文件,并通过删除“s”符号创建了其他文件,因为 laravel 默认可以从名称中识别模型,并且 Laravel 标准的模型必须写正常而不是复数。
在删除我创建它们使用的模型之前 php artisan make:model Buildings -m
我删除(建筑物)模型后创建的新模型是 php artisan make:模型构建 请注意,我刚刚创建了一个没有 '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
【问题讨论】:
标签: php mysql laravel eloquent laravel-eloquent