Почему я получаю ошибку «класс не найден» в моем модуле Laravel?

Я использую версию «laravel / framework»: «4.2. *», И я хочу использовать модульную систему для своего проекта. Я выполнил инструкции, приведенные в этом документе .

Я могу создавать модули с помощью команды: php artisan modules:create module_name . Я создал модуль администратора в моем каталоге приложений, и была создана структура каталога модуля.

Я использую DB::select('some SQL statement') в одном из действий контроллера из модуля admin, но он дает мне следующую ошибку:

Класс 'App \ Modules \ Admin \ Controllers \ DB' не найден.

Почему он не может найти этот класс?

При использовании DB или любых других фасадов Laravel вне корневого пространства имен вам необходимо убедиться, что вы действительно используете класс в корневом пространстве имен. Вы можете поместить класс \ перед классом.

 \DB::select(...) 

Или вы можете использовать ключевое слово use в своем файле класса, чтобы разрешить использование другого класса с пространством имен без явной записи пространства имен каждый раз, когда вы его используете.

 <?php namespace App\Modules\Admin\Controllers; use DB; use BaseController; class ModuleController extends BaseController { public function index() { // This will now use the correct facade $data = DB::select(...); } } 

Обратите внимание, что ключевое слово use всегда предполагает загрузку пространства имен из корневого пространства имен. Поэтому при use всегда требуется полное пространство имен.

или вы можете использовать autoload в composer.json

 "autoload": { "classmap": [ "app/commands", "app/controllers", "app/models", "app/database/migrations", "app/database/seeds", "app/tests/TestCase.php" ] },