拉拉维尔5和拉拉维尔5.1 "Class 'Model Name' not found",有更好的解决方案吗?



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

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

namespace App;
use IlluminateDatabaseEloquentModel;
class Example extends Model
{
protected $table = 'examples';
}

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

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

我看到一个错误:"类'示例'未找到"。我找到了解决方案,只需添加route.php:

use AppExample;

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

use AppExample;
use AppExample1;
use AppExample2;

是的,我在Laravel文档,其他论坛等中搜索。如果你按照Laravel 5.1文档的步骤——数据库配置,创建模型,使用它,你会得到这个错误。

添加编辑器的路径。Json " autolload "和- composer dump- autolload,没有帮助。

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

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

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

这样你就不会有use语句,而你的routes.php语句将非常干净,易于阅读,你最终会得到这样的东西:

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

它也会告诉你在哪里找到什么逻辑

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

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

但是我还是更喜欢默认的方法。正如你现在所看到的,每次我使用模型时,我都必须在前面添加App

最新更新