Sylnois Sylnois -3 years ago 155
PHP Question

Laravel - Model Class not found

When starting to work with models I got the following error

Class Post not found`.

All I did:

- Created a Model with the command
php artisan make:model

- Tried to get all entries from table
echo Post::all()

I used the following code:


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


namespace App;

use Illuminate\Database\Eloquent\Model;

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

What I tried

- Renaming Class

- Dump-autoload (Laravel 4 Model class not found)

Answer Source

Laravel 5 promotes the use of namespaces for things like Models and Controllers. Your Model is under the App namespace, so your code needs to call it like this:

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

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

As mentioned in the comments you can also use or import a namespace in to a file so you don't need to quote the full path, like this:

use App\Post;

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

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

While I'm doing a short primer on namespaces I might as well mention the ability to alias a class as well. Doing this means you can essentially rename your class just in the scope of one file, like this:

use App\Post as PostModel;

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

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

More info on importing and aliasing namespaces here:

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download