I have created an example model:
class ExampleModel extends Eloquent {
protected $table = 'example_model';
}
Then I tried to call ExampleModel::all()
which returned an error function all() does not exist
(seems like the class is created but without Eloquent functions). After changing model name (and file name) to Examplemodel
(now the model name is one word) it works. The problem is not that I misspelled something as I have checked that like a hundred of times and my file+class names are matching.
Am I missing something about auto loading?
I am on windows so I also tried changing file's name to Examplemodel
without changing the class name but it still seems to load the class without Eloquent
methods.
I have found a problem. I had a migration with class same as my model. Laravel is auto loading models with migrations and it thought I was referring to migration instead of a model.
After fixing that of course I had to run dumpautoload
composer command.
create a file example.php in models folder and then write this:
class Example extends Eloquent {
protected $table = 'example_model';
}
and then try:
Example::all();
taken from here
Did you do Autoload (dumpautoload)?
Because of this case works for me.
Do composer dump-autoload As the following works for me:
class ExampleTest extends \Eloquent {
protected $table = 'users';
}
Then on the routes file I have:
Route::get('/', function()
{
$data = ExampleTest::all();
return $data;
});
This gives me the data from my users table.