Php 类别';App\Http\Controllers\DB';找不到,我也不能使用新型号
我有一个非常基本的问题。在L4中,下面的方法是开箱即用的,所以现在我迷路了。请帮忙。几天前,我启动了一个Laravel5.0项目。我现在有新的,干净的安装 问题1:当我试图从数据库中获取任何信息时Php 类别';App\Http\Controllers\DB';找不到,我也不能使用新型号,php,laravel,namespaces,models,laravel-5,Php,Laravel,Namespaces,Models,Laravel 5,我有一个非常基本的问题。在L4中,下面的方法是开箱即用的,所以现在我迷路了。请帮忙。几天前,我启动了一个Laravel5.0项目。我现在有新的,干净的安装 问题1:当我试图从数据库中获取任何信息时 $headquote = DB::table('quotation_texts')->find(176); 我明白了: Class 'App\Http\Controllers\DB' not found 问题2:在克隆User.php模型之前,将类名更改为“Quotence”。以下是应用程序
$headquote = DB::table('quotation_texts')->find(176);
我明白了:
Class 'App\Http\Controllers\DB' not found
问题2:在克隆User.php模型之前,将类名更改为“Quotence”。以下是应用程序根文件夹中的QUOTES.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';
}
结果是:
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;
$employee = Employee::where('name', 'John')->first();
又快又脏
use DB;
或
只需将此添加到控制器的顶部
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';
}
在标头上的db之前使用反斜杠,然后可以像以前编写的那样使用它 以下是一个例子:
Use \DB;
然后在控制器类中,您可以像以前一样使用,例如:
$item = DB::table('items')->get();
试着这样做:
<?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);
}
}
}
?>
我喜欢做这个我认为更干净的女巫: 1-将模型添加到命名空间:
use App\Employee;
2-然后您可以执行以下操作:
$employees = Employee::get();
或者像这样的事情:
<?php
namespace App\Http\Controllers;
use DB;
use App\Quotation;
$employee = Employee::where('name', 'John')->first();
非常感谢。天竺葵!!我不能投票,因为我的声誉不够高,很抱歉!该解决方案仅适用于DB。就我的模型而言,现在的情况是:如果我使用报价;在控制器中或在quoery$headquote=\QUOTE::find(176)中放置反斜杠;我发现:在我找到类“App\Http\Controllers\quote”之前,找不到类“quote”,这表明L%正在将“quote”识别为控制器的名称。@PiotrPlebaniak由于您的
quote
可能位于App
命名空间中,我已经编辑了我的答案,现在它可以工作了,但仅作为使用App\quote;变体。它在查询命令中不起作用-语法错误,意外的“/”@PiotrPlebaniak,这里有/
?应该是`use-illumb\Support\Facades\DB代码>