Laravel 4.1中的类自动加载

时间:2014-04-25 14:01:37

标签: laravel

我正在尝试使用Laravel并且一直关注官方的Laravel Eloquent documentation以及可信来源的多个教程tuts plus

我在app / models中创建了一个名为Stack的模型,在数据库中有一个名为stacks的表,其中一个名为id的主键列对应于 Laravels 默认值。

<?php (Stack.php)

class Stack extends Eloquent
{


}

$stacks = Stack::all();

但是,当我运行此模型时,我收到以下错误消息。

Fatal error: Class 'Eloquent' not found in C:\www\laravelproject\app\models\Stack.php on line 4

包括官方文档和声誉良好的教程,我还看了2个youtube教程,似乎没有额外的自动加载/包含/要求在任何新定义的模型中声明,所以我假设这里的其他东西也许是错的。

我是否必须手动查找我必须自动加载的所有课程?如果是这样,为什么这不是在官方文档中写的?

我直接从laravel下载了最新的 laravel.phar 文件,并使用.bat文件来调用它。 (不是通过作曲家)

我已检查/尝试解决问题的一些事项。

  • Eloquent目录确实存在于 vendor \ laravel \ framework \ src \ Illuminate \ Database \ Eloquent
  • app / config / app.php 中设置的Eloquent 别名。默认&#39; Eloquent&#39; =&GT; &#39;照亮\数据库\锋\模型&#39;
  • 直接扩展类,如 \ Illuminate \ Database \ Eloquent \ Model ,错误信息相同,但使用 \ Illuminate \ Database \ Eloquent \ Model 而不仅仅是口才
  • 尝试通过浏览整个Laravel目录结构 \ vendor \ laravel \ framework \ src \ Illuminate \ Database \ Eloquent ,然后 \ laravel \ framework \ src直接扩展所有变体\ Illuminate \ Database \ Eloquent 等......等等......
  • 咬紧牙关并决定尝试第二种官方方法,我安装了作曲家并运行命令 composer create-project laravel / laravel --prefer-dist ,命令屏幕提醒我它正在下载然后所有文件都以100%成功,然后提醒我生成的应用程序密钥已成功设置。然后我导航到新的目录模型/ User.php并收到与使用previuos方法( laravel.phar 直接下载)时完全相同的错误消息。

提前致谢。

3 个答案:

答案 0 :(得分:1)

确保从正确的“入口”访问该应用程序。

因此,从 app / public / index.php

访问它

app / public / index.php文件加载自动加载器。

<?php
/**
 * Laravel - A PHP Framework For Web Artisans
 *
 * @package  Laravel
 * @author   Taylor Otwell <taylorotwell@gmail.com>
 */

/*
|--------------------------------------------------------------------------
| Register The Auto Loader
|--------------------------------------------------------------------------
|
| Composer provides a convenient, automatically generated class loader
| for our application. We just need to utilize it! We'll require it
| into the script here so that we do not have to worry about the
| loading of any our classes "manually". Feels great to relax.
|
*/

require __DIR__.'/../bootstrap/autoload.php';

答案 1 :(得分:0)

你的命名空间是可能的。尝试在扩展课程之前添加反斜杠。

class Stack extends \Eloquent
{


}

答案 2 :(得分:0)

确保您在应用配置中设置了Eloquent别名。 (应用程序/配置/ app.php)

或者直接使用该类。我相信它:Illuminate\Database\Eloquent\Model

class Stack extends \Illuminate\Database\Eloquent\Model {}