2016-09-30 209 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;無處不在!)