У меня очень основная проблема. В 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
Есть идеи, как мне решить проблему?
Проблема здесь — пространства имен 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();