Подтвердить что ты не робот

Класс "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

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

4b9b3361

Ответ 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);
    }

    }
  }

?>