Reputation: 1665
I'm trying to use Laravel packages. I created MyVendor/MyPackage
Routes, controllers, filters are already working. This is the classmap of my package:
"classmap": [
"src/migrations",
"src/controllers",
"src/seeds",
"src/models"
],
This is how looks my model:
namespace MyVendor\MyPackage\Models;
class MyModel extends \Illuminate\Database\Eloquent\Model {
}
And this is the code inside my controller which is in namespace MyVendor\MyPackage.
$test = new models\MyModel;
I'm getting this error: Class 'MyVendor\MyPackage\models\MyModel' not found
I can't figure out why. I'm new with namespaces so maybe it is something related to this. I tried with composer update, composer dump-autoload (inside my package) and still can't find my models.
If I get the declared classes with get_declared_classes() I can't see my model there.
The problem is that my model classes are not autoloading.
Upvotes: 5
Views: 6780
Reputation: 1224
In my case, running composer dump-autoload
solved the problem. Remember, once you change the model, run composer dump-autoload
again.
laravel version: 10, code:
namespace vendor\package\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class name extends Model
{
use HasFactory;
}
Upvotes: 0
Reputation: 1425
These works for me on Laravel 4.2
<?php namespace Vendor\Package;
use \Illuminate\Database\Eloquent\Model as Eloquent;
class Product extends Eloquent {
...
}
Upvotes: 0
Reputation: 173
Try this:
models
directory inside your package and add it to the package's classmapAdd a model YourModel.php
with the following:
<?php
// Note no namespace
use \Illuminate\Database\Eloquent\Model as Eloquent;
class YourModel extends Eloquent {
//
}
composer dump-autoload
from your package directory first and then root directoryTest your model by putting this at the top of your routes.php file:
<?php
$testModel = YourModel::get();
die(var_dump($testModel));
?>
Upvotes: 8