У меня есть основная проблема. В 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();