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

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

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

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

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

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

Проблема 2: Прежде чем я клонировал модель User.php, изменил имя класса на «Цитата». Ниже приведено содержимое файла 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

Есть идеи, как мне решить проблему?

43

Решение

Проблема здесь — пространства имен 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

113

Другие решения

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

use DB;

ИЛИ ЖЕ

\DB::table...
11

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

use DB;
5

Существует проблема в интервале имен как в 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';

}
0

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

<?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);
}

}
}

?>
0

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

Вот пример:

Use \DB;

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

$item = DB::table('items')->get();
0
По вопросам рекламы [email protected]