I have very basic problem. In L4 thes below methods worked out of the box, so now I am lost. Please help. A few days ago I started a Laravel 5.0 project. I have now fresh, clean installation.
Problem 1: When I try to get anything from database
$headquote = DB::table('quotation_texts')->find(176);
I get this:
Class 'App\Http\Controllers\DB' not found
Problem 2: Before I cloned the User.php Model, changed Class name to "Quotation". Below is the content of file Quotations.php put in App root folder:
<?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';
}
Any attempt to use the model
$headquote = Quotation::find(176);
ends up with this:
Class 'App\Http\Controllers\Quotation' not found
Any ideas how I could resolve the issue?
This question is related to
php
laravel
namespaces
models
laravel-5
There is problem in name spacing as in 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';
}
I like to do this witch i think is cleaner :
1 - Add the model to namespace:
use App\Employee;
2 - then you can do :
$employees = Employee::get();
or maybe somthing like this:
$employee = Employee::where('name', 'John')->first();
Just add this top of your controller.
use DB;
Try Like this:
<?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);
}
}
}
?>
Use the backslash before db on the header and you can use it then typically as you wrote it before.
Here is the example:
Use \DB;
Then inside your controller class you can use as you did before, like that ie :
$item = DB::table('items')->get();
Quick and dirty
use DB;
OR
\DB::table...
Source: Stackoverflow.com