未找到类'App\Http\Controllers\DB',我也无法使用新模型

Pet*_*ter 51 php namespaces models laravel laravel-5

我有非常基本的问题.在L4中,下面的方法开箱即用,所以现在我迷路了.请帮忙.几天前,我开始了一个Laravel 5.0项目.我现在有新鲜,干净的安装.

问题1:当我尝试从数据库中获取任何内容时

$headquote = DB::table('quotation_texts')->find(176);
Run Code Online (Sandbox Code Playgroud)

我明白了:

Class 'App\Http\Controllers\DB' not found
Run Code Online (Sandbox Code Playgroud)

问题2:在克隆User.php模型之前,将类名更改为"Quotation".下面是放在App根文件夹中的文件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';
}
Run Code Online (Sandbox Code Playgroud)

任何尝试使用该模型

$headquote = Quotation::find(176);
Run Code Online (Sandbox Code Playgroud)

最终得到这个:

Class 'App\Http\Controllers\Quotation' not found
Run Code Online (Sandbox Code Playgroud)

我有什么想法可以解决这个问题?

Mar*_*łek 129

这里的问题是PHP命名空间.您需要学习如何使用它们.由于您的控制器位于App\Http\Controllers命名空间中,如果您引用任何其他类,则需要use在文件开头添加前导反斜杠(或正确的命名空间)或添加语句(在类定义之前).

所以在你的情况下你可以使用:

$headquote = \DB::table('quotation_texts')->find(176);
$headquote = \App\Quotation::find(176);
Run Code Online (Sandbox Code Playgroud)

或者添加你的​​控制器类use语句,这样你的控制器类的开头可能如下所示:

<?php

namespace App\Http\Controllers;

use DB;
use App\Quotation;
Run Code Online (Sandbox Code Playgroud)

有关名称空间的更多信息,您可以查看如何使用其他名称空间中的对象以及如何在PHP手册中导入名称空间PHP手册中的名称空间


小智 7

只需添加控制器的顶部即可.

use DB;
Run Code Online (Sandbox Code Playgroud)