在包上使用模型

问题描述 投票:0回答:3

我正在尝试使用 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() 获取声明的类,我在那里看不到我的模型。

问题是我的模型类没有自动加载。

laravel model laravel-4 package
3个回答
8
投票

试试这个:

  1. 在包内创建
    models
    目录并将其添加到包的类映射中
  2. 添加模型

    YourModel.php
    ,其中包含以下内容:

    <?php
    // Note no namespace
    
    use \Illuminate\Database\Eloquent\Model as Eloquent;
    
    class YourModel extends Eloquent {
        //
    }
    
  3. 首先从包目录运行
    composer dump-autoload
    ,然后运行根目录
  4. 通过将其放在 paths.php 文件的顶部来测试您的模型:

    <?php
    $testModel = YourModel::get();
    die(var_dump($testModel));
    ?>
    

0
投票

这些在 Laravel 4.2 上对我有用

<?php namespace Vendor\Package;

use \Illuminate\Database\Eloquent\Model as Eloquent;

class Product extends Eloquent {

    ...

}

0
投票

就我而言,运行

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;
}
© www.soinside.com 2019 - 2024. All rights reserved.