我以前手動刪除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
>>>應用\用戶::發現(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