본문 바로가기
MySql

MySQL PHP 경고 : include (C : \ xampp \ htdocs \ hse \ vendor \ composer /../../ app / Buildings.php) : 스트림을 열지 못했습니다.

by 베이스 공부 2020. 10. 23.
반응형

이전에 App *에서 일부 모델 파일을 수동으로 삭제하고 "s"기호 만 제거하여 다른 파일을 만들었습니다. laravel은 기본적으로 이름에서 모델을 인식 할 수 있고 Laravel standadrd의 모델은 복수가 아닌 일반으로 작성되어야하기 때문입니다.

내가 만든 모델을 삭제하기 전에 php artisan make : model 건물 -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

 

해결 방법

 

명령에 모델 네임 스페이스가 없습니다.

그것은해야한다

App\User::find(4)->UserAssignedBuilding

App\Building::all()

UserAssignedBuilding 메소드도 buildings 로 변경합니다.

 

참조 페이지 https://stackoverflow.com/questions/46852504

 

 

반응형

댓글