【Laravel】Class (...) not found의 대처

3471 단어 PHP라라벨


결론



직접 만든 모델의 namespace 선언이 잘못되었습니다.


php artisan make:model 커멘드로 모델을 작성했을 경우는 자동적으로 네임스페이스가 등록되는 것 같습니다만,
커맨드를 사용하지 않고 스스로 모델을 추가한 경우, 별도 등록해 줄 필요가 있는 것 같습니다.

발생한 코드


// App\Models\PasswordResetsという名前空間をインポートしているのに
use App\Models\PasswordResets;

class ResetPasswordController extends Controller
{
...
    public function showResetForm(Request $request, $token = null)
    {
        // PasswordResetsが見つからずにエラー発生
        $record = PasswordResets::where('email', $request->email)->first(); 


해소



1. namespace 선언 확인



PasswordReset 클래스를 살펴보면 namespace 선언이 잘못되었습니다. 그래서 수정.
<?php

// 自分でModelsフォルダを作成してそこに格納しているので、namespace App\Models;と記述する必要がある...当たり前
namespace App;

use Illuminate\Database\Eloquent\Model;

class PasswordResets extends Model
{
...

2. composer dump-autoload 실행



커멘드의 실행에 의해 독자적으로 구현한 이름 공간도 주워, 설정 파일에 보존해 줍니다.
> composer dump-autoload

3. 네임스페이스에 추가되었는지 확인


laravel/vendor/composer/autoload.classmap.php 에 네임스페이스가 추가되어 있으면 OK입니다.
<?php

// autoload_classmap.php @generated by Composer

$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);

return array(
'App\\Models\\PasswordReset' => $baseDir . '/app/Models/PasswordReset.php',

좋은 웹페이지 즐겨찾기