cecilli0n
cecilli0n

Reputation: 467

Class autoloading in Laravel 4.1

I am trying to use Laravel and have been following the official Laravel Eloquent documentation and multiple tutorials at credible sources tuts plus

I created a model inside app/models called Stack with a table in the database called stacks with a primary key column called id, as corresponding to Laravels defaults.

<?php (Stack.php)

class Stack extends Eloquent
{


}

$stacks = Stack::all();

However when I run this model I get the following error message.

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

Including the official documentation and the reputable tutorials, I have also watched 2 youtube tutorials and it seems like there is no additional autoloading/including/requiring required to be declared in any new defined model's, so I am assuming something else here maybe wrong.

Do I have to manually find all classes I must autoload? If so, why is this not written in the official documentation?

I downloaded the latest laravel.phar file directly from laravel and used a .bat file to call it. (Not via composer)

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

Thanks in advance.

Upvotes: 4

Views: 738

Answers (3)

Chris
Chris

Reputation: 4060

Make sure you are accessing the application from the correct 'entrance'.

Thus, accessing it from app/public/index.php.

The app/public/index.php file loads the autoloader.

<?php
/**
 * Laravel - A PHP Framework For Web Artisans
 *
 * @package  Laravel
 * @author   Taylor Otwell <[email protected]>
 */

/*
|--------------------------------------------------------------------------
| 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';

Upvotes: 1

Bastian Hofmann
Bastian Hofmann

Reputation: 2485

Make sure your are setting the Eloquent alias in the app config. (app/config/app.php)

Alternatively use the class directly. I believe it's: Illuminate\Database\Eloquent\Model

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

Upvotes: 0

Keith Mifsud
Keith Mifsud

Reputation: 1618

It's possible your is namespacing. Try adding the backslash before the class being extended.

class Stack extends \Eloquent
{


}

Upvotes: 0

Related Questions