1. ホーム
  2. php

[解決済み] Laravel - モデルクラスが見つかりません

2022-01-30 21:59:03

質問

モデルで作業を開始すると、次のようなエラーが発生しました。

クラス Post が見つかりません`。

私がしたことすべて
- コマンドでModelを作成 php artisan make:model
- テーブルからすべてのエントリを取得しようとした postsecho Post::all()

次のようなコードを使いました。

ルーター.php

Route::get('/posts', function(){
    $results = Post::all();
    return $results;
});

ポスト.php

<?php 
namespace App;

use Illuminate\Database\Eloquent\Model;

class Post extends Model {
    protected $table = 'posts';    
}

試したこと
- クラス名の変更
- ダンプオートロード( Laravel 4 モデルクラスが見つかりません )

解決方法は?

Laravel5では 名前空間 をモデルやコントローラのようなものに使用します。モデルは App という名前空間があるので、コードではこのように呼び出す必要があります。

Route::get('/posts', function(){

        $results = \App\Post::all();
        return $results;
});

コメントで述べたように use のように、名前空間をファイルにインポートすることで、フルパスを引用する必要がなくなります。

use App\Post;

Route::get('/posts', function(){

        $results = Post::all();
        return $results;
});

名前空間について簡単に説明するついでに、クラスのエイリアスについても触れておこうと思います。この機能を使うと、1つのファイルの中でだけクラス名を変更することができます。

use App\Post as PostModel;

Route::get('/posts', function(){

        $results = PostModel::all();
        return $results;
});

名前空間のインポートとエイリアスの詳細については、こちらをご覧ください。 http://php.net/manual/en/language.namespaces.importing.php