PHP警告:包括(C:\ xampp \ htdocs \ hse \ vendor \ composer /../../ app/Buildings.php):无法打开流
问题描述:
我以前手动删除App *并创建其他的只是删除“s”符号,因为默认情况下,laravel可以识别那里的模型名称,Laravel standadrd的模型必须写成正常的而不是复数形式。PHP警告:包括(C: xampp htdocs hse vendor composer /../../ app/Buildings.php):无法打开流
使用 PHP工匠化妆删除我创建它们的模型之前:模型建筑-m
新的模式,我创建之后我删除了(建筑)模型是 PHP工匠制作:建立模型 注意我刚刚创建了一个新的模型,而“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的工匠当我运行下面的命令,来获取用户指定的建筑:
>>> 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
答
在你命令你缺少模型命名空间
它应该是
App\User::find(4)->UserAssignedBuilding
而且
App\Building::all()
另外改变方法UserAssignedBuilding
到buildings
答
的误差示出在廷克(PHP人员鼓捣) 当我倾倒作曲家自动加载文件
composer dump-autoload
然后在修补程序中再次尝试,同样的错误显示作曲家转储命令没有这样做,但是当我关闭当前修补程序并打开一个新的(php工匠修补程序),现在每件事情都完美地工作。
因此,简单的解决方案是当您运行dumpautoload命令时,您需要重新启动修补程序以查看更改。
>>>应用\用户::发现(4) - > UserAssignedBuilding PHP警告:包括(C:\ XAMPP \ htdocs中\ HSE \厂商\作曲家/../../应用程序/建筑物。C:\ xampp \ htdocs \ hse \ vendor \ composer \ ClassLoader.php上没有这样的文件或目录在线444 >>> 而第二个命令:App \ Building :: all )成功检索到所有建筑物表格记录。但为什么当我使用相同的命令而没有为(User :: all()和其他一些表格)指定模型命名空间时,我正在成功获取记录 – user2873860
尝试将'UserAssignedBuilding'重命名为'buildings'并像这样使用'App \ User :: find(4) - > buildings' – ljubadr
这工作,我发布这个问题后,我已经改变了方法名称UserBuildings(),所以当我提到我以前的评论,该命令仍然给出同样的错误,我键入的老方法名 应用程序\用户::发现(4) - > UserAssignedBuilding 但我的问题是:为什么有些机型可以在鼓捣被称为无需键入有命名空间 – user2873860