【问题标题】:Laravel 5 Model namespace class not found未找到 Laravel 5 模型命名空间类
【发布时间】:2015-04-13 20:02:25
【问题描述】:

我正在尝试将我的模型存储在自定义命名空间和目录结构中,如下所示:

我有:

namespace Modules\Core;

use App\Http\Controllers\Controller;

class TestController extends Controller {

    public function index(){
        $user = new User;
        return view('core::test');
    }

}

但我得到了:

FatalErrorException in TestController.php line 8:
Class 'Modules\Core\User' not found

无论如何这是错误的,所以我认为它必须是'Modules\Core\Models\User'。我试过了,但仍然遇到同样的错误(只是使用了不同的类名)。

我的模特:

namespace Modules\Core;

use Illuminate\Database\Eloquent\Model as Eloquent;

class User Extends Eloquent {
    protected $table = 'users';
}

如何在 TestController 中访问此模型?


Route::group(array('namespace' => 'Modules\Core\Controllers'), function() {
    Route::get('/test', ['uses' => 'TestController@index']);
});

【问题讨论】:

    标签: php laravel namespaces laravel-5


    【解决方案1】:

    如果您的控制器存储在 Modules/Core/Controllers 中,则命名空间应为 namespace Modules\Core\Controllers;

    同样,如果模型存储在 Modules/Core/Models 中,则其命名空间为 namespace Modules\Core\Models;

    然后,在控制器中,在使用前导入它:

    <?php namespace Modules\Core\Controllers;
    
    use Modules\Core\Models\User;
    use App\Http\Controllers\Controller;
    
    class TestController extends Controller {
    
        public function index(){
            $user = new User;
            return view('core::test');
        }
    
    }
    

    【讨论】:

    • 我应该如何调整我的路由器(见编辑)?暂时找不到该类,这给了我一个错误。
    【解决方案2】:

    您应该编辑您的routes.php 文件:

    Route::group(array('namespace' => 'Modules\Core\Controllers'), function() {
        Route::get('/test', ['uses' => '\Modules\Core\TestController@index']);
    });
    

    full 与命名空间一起使用

    【讨论】:

    • 这给了我:Class Modules\Core\Controllers\\Modules\Core\TestController 不存在
    • 奇怪,我做了作曲家转储,现在可以工作了。如果您更改文件中的路径,我认为您不必这样做吗? :S
    • @imperium2335 使用“composer dump”也为我解决了类似的问题!感谢您的评论。
    【解决方案3】:

    我遇到了和上面一样的问题。就我而言,我有以下命名空间:

    namespace Modules\XMLApi;
    

    我得到了与上面相同的错误。当我将命名空间更改为以下内容时:

    namespace Modules\XmlApi;
    

    然后运行以下命令: 作曲家转储自动加载

    然后它起作用了。

    【讨论】:

    • 谢谢。该命令让我意识到我在composer.json 文件中有一个额外的,
    猜你喜欢
    • 1970-01-01
    • 2015-03-06
    • 2015-06-19
    • 2014-04-05
    • 2021-12-31
    • 1970-01-01
    • 1970-01-01
    • 2015-09-15
    • 2016-10-11
    相关资源
    最近更新 更多