2016-05-16 5 views
0

У меня есть два разных контроллера в папке контроллеров по умолчанию Laravel 5 (app/Http/Controllers). И у меня есть синтаксис, как DB::select(...) в обоих из них. Контроллер №1 работает нормально. Контролер №2 говоритНевозможно использовать фасад БД в Laravel 5

"Fatal error: Class 'DB' not found in ...".

Может кто-нибудь сказать мне, почему?

Controller # 1 код (работает отлично):

<?php 
    use Illuminate\Routing\Controller; 

    class Page extends Controller { 
    public function foo(){ 
     ... 
     DB::select(...); 
     ... 
    } 
    } 
?> 

И это контроллер # 2 код (не работает):

<?php 
    use Illuminate\Routing\Controller; 

    class User extends Controller { 
    public function boo(){ 
     ... 
     DB::select(...); 
     ... 
    } 
    } 
?> 

И у меня есть единственное место, где я начиная с этих контроллеров. У него нет «пространства имен», «использования» или чего-то еще.

Любые идеи?

+0

Вам определенно нужно пространство имен, поскольку Laravel ищет контроллер внутри приложения \ Http \ Controlles namespace. «Использовать БД»; для ссылки из глобального пространства имен – scrubmx

+0

Спасибо, но «использовать БД» все равно не работает. И все в порядке, возможно, пространство имен является хорошим решением, но почему мой синтаксис работает в первом контроллере? – WeekendMan

+0

Вы пробовали '\ DB :: select (...);'? –

ответ

1

Попробуйте включить:

use DB; 

Как показано ниже:

<?php 
    use Illuminate\Routing\Controller; 
    use DB; 

    class Page extends Controller { 
    public function foo(){ 
     ... 
     DB::select(...); 
     ... 
    } 
    } 
?> 

Для получения более подробной информации: https://laravel.com/docs/5.2/database

+0

Уже пробовал, все равно – WeekendMan

+0

Как насчет ниже: 'use \ Illuminate \ Support \ Facades \ DB как DB;' –

+0

Посмотрите, есть ли в файле app/config.php установлен DB как псевдоним –