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
posts
with
echo Post::all()


I used the following code:

router.php

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


Post.php

<?php
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: http://php.net/manual/en/language.namespaces.importing.php

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