Класс «App \ Http \ Controllers \ DB» не найден, и я также не могу использовать новую модель

У меня есть основная проблема. В L4 thes ниже методы разработаны из коробки, так что теперь я потерян. Пожалуйста помоги. Несколько дней назад я начал проект Laravel 5.0. У меня есть свежая, чистая установка.

Проблема 1: Когда я пытаюсь получить что-либо из базы данных

$headquote = DB::table('quotation_texts')->find(176); 

Я получаю это:

 Class 'App\Http\Controllers\DB' not found 

Проблема 2. Прежде чем я клонировал модель User.php, изменил имя класса на «Quotation». Ниже приведено содержимое файла Quotations.php в папку корневого каталога приложения:

 <?php namespace App; use Illuminate\Database\Eloquent\Model; class Quotation extends Model { /** * The database table used by the model. * * @var string */ protected $table = 'quotation_texts'; } 

Любая попытка использовать модель

 $headquote = Quotation::find(176); 

заканчивается этим:

 Class 'App\Http\Controllers\Quotation' not found 

Любые идеи, как я мог решить проблему?

Проблема здесь в пространствах имен PHP. Вам нужно научиться их использовать. Поскольку ваш контроллер находится в пространстве имен App\Http\Controllers , если вы ссылаетесь на какой-либо другой класс, вам нужно добавить ведущую обратную косую черту (или правильное пространство имен) или добавить оператор use в начале файла (до определения класса).

Поэтому в вашем случае вы можете использовать:

 $headquote = \DB::table('quotation_texts')->find(176); $headquote = \App\Quotation::find(176); 

или добавить в свой оператор use класса контроллера, чтобы начало вашего класса контроллера выглядело так:

 <?php namespace App\Http\Controllers; use DB; use App\Quotation; 

Для получения дополнительной информации об пространствах имен вы можете посмотреть, как использовать объекты из других пространств имен и как импортировать пространства имен в PHP или пространства имен в руководстве по PHP

Быстро и грязно

 use DB; 

ИЛИ

 \DB::table... 

Просто добавьте эту вершину своего контроллера.

 use DB; 

Существует проблема с интервалом между именами, как в laravel 5.2.3

 use DB; use App\ApiModel; OR use App\name of model; DB::table('tbl_users')->insert($users); OR DB::table('table name')->insert($users); model class ApiModel extends Model { protected $table='tbl_users'; } 

Попробуйте вот так:

 <?php namespace App\Http\Controllers; use Illuminate\Http\Request; use DB; class UserController extends Controller { function index(){ $users = DB::table('users')->get(); foreach ($users as $user) { var_dump($user->name); } } } ?> 

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

Вот пример:

 Use \DB; 

Затем внутри вашего класса контроллера вы можете использовать так же, как и раньше, например:

 $item = DB::table('items')->get();