【问题标题】:Laravel 5 and Laravel 5.1 "Class 'Model Name' not found", is there better solution?Laravel 5 和 Laravel 5.1 “找不到类‘模型名称’”,有更好的解决方案吗?
【发布时间】:2015-12-12 03:34:28
【问题描述】:

我是 Laravel 的新手,但我遇到了一些问题。 在 Laravel 4 中一切正常。我为数据库配置做了所有步骤。 ,创建模型,一切正常。

在 Laravel 5/5.1 中没有 Models 文件夹,默认情况下 Models 存储在 App 文件夹中,但如果我创建 Model 'Example.php':

namespace App;

use Illuminate\Database\Eloquent\Model;

class Example extends Model
{
protected $table = 'examples';
}

并尝试在 routes.php 中获取它:

Route::get('/', function(){

$example = new Example;

return $example::all();
});

我看到一个错误:“找不到类'示例'”。 我发现解决方案只是添加到 route.php:

use App\Example;

但是,有没有更好的解决方案? 我必须为每个模型添加“使用”吗? 例如,如果我有 2-3-4-5-etc 模型,我必须输入:

use App\Example;
use App\Example1;
use App\Example2;

是的,我在 Laravel 文档、其他论坛等中进行搜索。如果您执行与 Laravel 5.1 文档相同的步骤 - 数据库配置、创建模型、使用它,您将收到此错误。

将路径添加到 composer.json "autoload" 和 - composer dump-autoload,没有帮助。

【问题讨论】:

  • 那么你必须使用:"use App\Models\Example;",对于每个模型,我都在问其他的。
  • 你必须习惯它,它会给你的代码带来大量的组织。

标签: laravel laravel-5 models laravel-routing


【解决方案1】:

你也可以使用这样的直接方法

    Route::get('/', function()
{
$example = new App\Example;
return $example::all();
});

但我仍然更喜欢默认方法。正如你现在看到的那样,每次我使用模型时,我都必须在前面 App

【讨论】:

    【解决方案2】:

    假设您有两个类 Example,一个是模型,另一个是其他东西,位于其他位置。
    PHP 无法知道您要使用哪一个。
    这就是为什么如果您尝试在像 routes.php 这样的文件中使用类,它将无法找到它,除非您指定它或使用它的完整路径(如 App\Model\Example)。

    现在,一个很好的问题是你为什么在 routes.php 中有逻辑?
    为了代码清晰和概念分离,不建议您编写实际逻辑(或视图)或该文件中路由定义以外的任何内容。

    建议您实际上重构代码并将处理请求的每组逻辑移动到实际控制器,然后定义哪个控制器处理那里的路径。

    这样你最终将没有use 语句,你的routes.php 实际上会非常干净且易于阅读,你最终会得到这样的结果:

    Route::resource('example', 'ExampleController');
    Route::resource('admin', 'AdminController');
    Route::resource('user', 'UserController');
    

    这也会告诉你在哪里可以找到什么逻辑。

    【讨论】:

      猜你喜欢
      • 2017-09-13
      • 1970-01-01
      • 2019-11-27
      • 1970-01-01
      • 2015-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-13
      相关资源
      最近更新 更多