首页 文章

Laravel 4.1中的类自动加载

提问于
浏览
4

我正在尝试使用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文件来调用它 . (不是通过作曲家)

Some things I have checked/tried to fix the problem.

  • 在供应商\ laravel \ framework \ src \ Illuminate \ Database \ Eloquent中确实存在Eloquent目录

  • 在app / config / app.php中设置的Eloquent别名 . 默认'Eloquent' => 'Illuminate\Database\Eloquent\Model'

  • 直接扩展类如\ Illuminate \ Database \ Eloquent \ Model,错误信息相同,但用\ Illuminate \ Database \ Eloquent \ Model而不仅仅是Eloquent

  • 尝试通过导航整个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

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

    因此,从 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';
    
  • 0

    你可能是命名空间 . 尝试在扩展类之前添加反斜杠 .

    class Stack extends \Eloquent
    {
    
    
    }
    
  • 1

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

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

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

相关问题