-1

The message "Class 'app\Models\User' not found" appears, but I've researched in several places and none of the solutions worked.

composer.json:

"autoload": {
    "classmap": [
        "database","Models"
    ],

    "psr-4": {
        "App\\": "app/"
    }
},

User.php:

namespace App\Models;

class User extends Eloquent{
    public function allUsers(){
        return self::all();     
    }   
}

UserController.php:

namespace App\Http\Controllers;
use App\Models\User;
use Illuminate\Http\Request;
class UserController extends Controller{    
    protected $user = null;

    public function __construct(User $user){

        $this->user = $user;

    }
    public function allUsers(){
        return $this->user->allUsers();
    }
    public function getUser($id){

    }
    public function saveUser(){

    }
    public function updateUser($id){

    }
    public function deleteUser($id){

    }
}

UserController alternative (not working too)

namespace App\Http\Controllers;
use App\Models\User;
use Illuminate\Http\Request;
class UserController extends Controller{
    public function __construct(){          
    }
    public function allUsers(){

        $class = '\app\Models\User';
        return $class::allUsers();

    }
    public function getUser($id){

    }
    public function saveUser(){

    }
    public function updateUser($id){

    }
    public function deleteUser($id){

    }
}

Can someone help me?

Marcin Nabiałek
  • 109,655
  • 42
  • 258
  • 291
Lucius
  • 1,246
  • 1
  • 8
  • 21

3 Answers3

1

Go to config/auth.php and change App\User:class to App\Models\User::class.

'providers' => [
    'users' => [
        'driver' => 'eloquent',
        'model' => App\Models\User::class,
    ],

Also change the namespace of User.php model

namespace App\Models;
Hyder B.
  • 10,900
  • 5
  • 51
  • 60
0

You should care about case.

$class = '\app\Models\User';

won't work but

$class = '\App\Models\User';

probably will.

Marcin Nabiałek
  • 109,655
  • 42
  • 258
  • 291
0

I had a similar issue once. Here's how I solved it It was a resource file, where i called a class instance,

$this->user->name

And in the models file, I called it as

User::class

Even when the namespace was clearly App\Models

That didn't work, because the user model was in App root directory. So I changed the instance to

\App\User::class

It worked after that

Joshua Etim
  • 206
  • 2
  • 5