user1692333
user1692333

Reputation: 2597

How to call models in Laravel 5?

So, in L5 I created folder like app/Models/Blog where is file Posts.php which looks like:

<?php namespace App\Models\Blog;

use Illuminate\Database\Eloquent\Model;

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

After it I executed composer dump and then in my controller:

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;
use Models\Blog\Posts as Posts;

class BlogController extends Controller {

    public function index()
    {
        $post = Posts::all()->toArray();

        dd($post);
    }
}

It throws me an error:

FatalErrorException in BlogController.php line 14: Class 'Models\Blog\Posts' not found

Upvotes: 6

Views: 49076

Answers (4)

Ema.H
Ema.H

Reputation: 2878

You need to check two points :

  1. the namespace have to be in first
  2. the using must be use App\Models\Blog in your case

Like this :

<?php
namespace App\Http\Controllers;

use App\Http\Controllers\Controller;
use App\Models\Blog;

class BlogController extends Controller {

    public function index()
    {
        $post = Posts::all()->toArray();

        dd($post);
    }
}

(tested with Laravel 5.4)

Upvotes: 0

Kussie
Kussie

Reputation: 343

Try changing this:

use Models\Blog\Posts as Posts;

To this:

use App\Models\Blog\Posts;

Upvotes: 16

Peon
Peon

Reputation: 8030

In Laravel 5.2 it's just:

use App\Blog;

or

use App\Blog\Posts;

Upvotes: 1

maartenpaauw
maartenpaauw

Reputation: 624

Change the following

class Posts extends Model {

to

class Posts extends \Eloquent {

Upvotes: 0

Related Questions