Class' App \ Http \ Controllers \ DB'没找到,我也不能使用新的模型

时间:2014-11-17 06:15:51

标签: php laravel namespaces models laravel-5

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

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

$headquote = DB::table('quotation_texts')->find(176);

我明白了:

Class 'App\Http\Controllers\DB' not found

问题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';
}

任何使用该模型的尝试

$headquote = Quotation::find(176);

以此结束:

Class 'App\Http\Controllers\Quotation' not found

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

7 个答案:

答案 0 :(得分:119)

这里的问题是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;

有关命名空间的详细信息,请查看How to use objects from other namespaces and how to import namespaces in PHPnamespaces in PHP manual

答案 1 :(得分:12)

快速而肮脏

use DB; 

OR

\DB::table...

答案 2 :(得分:7)

只需添加控制器顶部即可。

use DB;

答案 3 :(得分:1)

尝试这样:

<?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);
    }

    }
  }

?>

答案 4 :(得分:0)

如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 :(得分:0)

在标题上使用db之前的反斜杠,然后通常可以像以前一样使用它。

以下是示例:

Use \DB;

然后在您的控制器类中,您可以像以前一样使用,例如:

$item = DB::table('items')->get();

答案 6 :(得分:0)

我喜欢做这个我认为更干净的女巫:

1-将模型添加到名称空间:

use App\Employee;

2-那么您可以:

$employees = Employee::get();

或类似的东西:

$employee = Employee::where('name', 'John')->first();