我是Laravel的新手,但我遇到了一些问题。 在Laravel 4中一切正常。我为数据库配置做了所有步骤。 ,创建模型,一切正常。
在Laravel 5 / 5.1中没有文件夹模型,默认模型存储在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();
});
我看到一个错误:" Class'示例'找不到"。 我发现解决方案只是添加到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,没有帮助。
答案 0 :(得分:0)
想象一下,你有两个类Example
,一个是模型,另一个是别的,位于其他地方。
PHP无法知道您要使用哪一个
这就是为什么如果你尝试在routes.php这样的文件中使用一个类,它就无法找到它,除非你指定它或者像它一样使用App\Model\Example
这样的完整路径。
现在,一个很好的问题是为什么你在routes.php中有逻辑? 为了代码清晰和概念分离,您无需编写实际的逻辑(或视图)或该文件中路由定义以外的任何内容。
建议您实际重构代码并将处理请求的每组逻辑移动到实际控制器,然后定义哪个控制器处理哪条路径。
这样你最终会得不到use
语句,而你的routes.php
实际上会非常简洁易读,你最终会得到这样的结果:
Route::resource('example', 'ExampleController');
Route::resource('admin', 'AdminController');
Route::resource('user', 'UserController');
这也会告诉你在哪里找到什么逻辑。
答案 1 :(得分:0)
U也可以使用像这样的直接方法
Route::get('/', function()
{
$example = new App\Example;
return $example::all();
});
但我仍然更喜欢默认方法。正如你现在可以看到的,每次我使用模型时,我都必须在 App 前面。