Класс "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
Любые идеи, как я мог решить проблему?
Ответы
Ответ 1
Проблема здесь в пространствах имен PHP. Вам нужно научиться их использовать. Поскольку ваш контроллер находится в пространстве имен App\Http\Controllers
, если вы ссылаетесь на любой другой класс, вам нужно добавить ведущую обратную косую черту (или собственное пространство имен) или добавить оператор use
в начале файла (до определения класса).
Итак, в вашем случае вы можете использовать:
$headquote = \DB::table('quotation_texts')->find(176);
$headquote = \App\Quotation::find(176);
или добавьте в оператор контроллера class use
, чтобы начало вашего класса контроллера выглядело так:
<?php
namespace App\Http\Controllers;
use DB;
use App\Quotation;
Для получения дополнительной информации об пространствах имен вы можете посмотреть Как использовать объекты из других пространств имен и как импортировать пространства имен в PHP или пространства имен в руководстве PHP
Ответ 2
Быстрый и грязный
use DB;
ИЛИ
\DB::table...
Ответ 3
Просто добавьте эту вершину своего контроллера.
use DB;
Ответ 4
В интервалах имен есть проблема, как в 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';
}
Ответ 5
Используйте обратную косую черту перед db в заголовке, и вы можете использовать его, как обычно, как вы его писали раньше.
Вот пример:
Use \DB;
Затем внутри вашего класса контроллера вы можете использовать так же, как и раньше, например:
$item = DB::table('items')->get();
Ответ 6
Попробуйте:
<?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);
}
}
}
?>