我正在尝试使用 Laravel 包。我创建了 MyVendor/MyPackage
路由、控制器、过滤器已经在工作。这是我的包的类映射:
"classmap": [
"src/migrations",
"src/controllers",
"src/seeds",
"src/models"
],
这就是我的模型的样子:
namespace MyVendor\MyPackage\Models;
class MyModel extends \Illuminate\Database\Eloquent\Model {
}
这是我的控制器内的代码,位于名称空间 MyVendor\MyPackage 中。
$test = new models\MyModel;
我收到此错误: 未找到“MyVendor\MyPackage\models\MyModel”类
我不明白为什么。我对命名空间很陌生,所以也许与此相关。 我尝试使用composer update、composer dump-autoload(在我的包内),但仍然找不到我的模型。
如果我使用 get_declared_classes() 获取声明的类,我在那里看不到我的模型。
问题是我的模型类没有自动加载。
试试这个:
models
目录并将其添加到包的类映射中添加模型
YourModel.php
,其中包含以下内容:
<?php
// Note no namespace
use \Illuminate\Database\Eloquent\Model as Eloquent;
class YourModel extends Eloquent {
//
}
composer dump-autoload
,然后运行根目录通过将其放在 paths.php 文件的顶部来测试您的模型:
<?php
$testModel = YourModel::get();
die(var_dump($testModel));
?>
这些在 Laravel 4.2 上对我有用
<?php namespace Vendor\Package;
use \Illuminate\Database\Eloquent\Model as Eloquent;
class Product extends Eloquent {
...
}
就我而言,运行
composer dump-autoload
解决了问题。请记住,一旦更改模型,请再次运行 composer dump-autoload
。
laravel 版本:10, 代码:
namespace vendor\package\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class name extends Model
{
use HasFactory;
}