2016-09-30 170 views
0

当我尝试在控制器类方法内使用User类时,出现Class 'App\Models\User' not found错误。我到处寻找,并尝试所有没有运气的东西!以下是我已经试过:Laravel 4:Model Class not found

  1. 检查类存在,是在正确的道路(它的工作原理其他地方)
  2. 添加use App\Models\User;控制器文件的顶部,只需使用User
  3. 尝试: new \App\Models\User
  4. 运行:composer dump-autoload
  5. 运行:php artisan dump-autoload
  6. 运行:php artisan clear-compiled

当我做dd(class_exists('App\Models\User')),我得到\vendor\laravel\framework\src\Illuminate\Support\helpers.php:513:boolean false,它确认该类真的无法访问出于某种原因。

任何想法?

编辑

你会发现类似的问题,但不一样。请仔细阅读问题。我没有说控制器类缺失。我说一个模型类(用户)不能从特定的控制器类中访问。而模型课程在其他地方都有效。

编辑:代码摘录

<?php 

use App\Models\User; 
use App\Models\Role; 
use App\Models\Advert; 
use App\Models\AdvertPhoto; 
use App\Models\AdvertMetum; 
use App\Models\AdvertMetaDatum; 
use App\Models\AdvertMetaCategory; 
use Illuminate\Support\Facades\View; 
use Illuminate\Support\Facades\Input; 
use Illuminate\Support\Facades\Hash; 
use Illuminate\Support\Facades\Config; 
use Illuminate\Support\Facades\Auth; 
use Illuminate\Support\Facades\Mail; 
use Illuminate\Support\Facades\Response; 
use Illuminate\Support\Facades\Request; 

class AdvertsController extends BaseController { 

    /** 
    * Show the form for creating a new resource. 
    * GET /adverts/create 
    * 
    */ 
    public function create() 
    { 
     // New user instance 
     // dd(class_exists('\App\Models\User')); // Outputs FALSE 
     $userx = new User; // Throws an Exception 

     return View::make('adverts.create'); 

    } 




} 
+0

的可能的复制([控制器类不Laravel 4中] http://stackoverflow.com/questions/25099054/controller-class-not-in-laravel-4) –

+0

不,它不是重复的。请仔细阅读问题。我没有说控制器类缺失。我说一个模型类(用户)不能从特定的控制器类中访问。而模型课程在其他地方都有效。 – Gboyega

+0

其实你说的“_inside控制器class_”并不意味着“_a特定的控制器class_”更不用说“_the模型类在其他地方工作_”。也就是说,你可能应该发布特定控制器的代码(至少命名空间,使用和方法不起作用),因为它可能与该控制器上的一些代码有关。 –

回答

0

我设法解决这个我自己。事实证明,你必须告诉Laravel什么类和表将用于认证(a.k.a你的'用户'类)。我不知道这个(加上这是一个继承的项目)。显然User类是在根名称空间中定义的(即\User),并且Laravel被配置为查找\User。但有时我在代码中看到\App\Models\User,它给我的印象是User与其他模型在相同的命名空间下,因为它们都是在app/models/文件夹中。

'model' => 'User' 

到:我在config/auth.php通过改变纠正了这个问题

'model' => App\Models\User::class 

而且在app/models/user.php的顶部添加命名空间:

namespace App\Models; 

最后,我设置的别名config/app.php像这个:

'User' => 'App\Models\User' 

所以这在以往任何时候我一直在使用User::blah不会打破(强迫我加入use App\Models\User;无处不在!)