4

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

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

4

2 回答 2

7

尝试这个:

  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. 通过将其放在您的 routes.php 文件的顶部来测试您的模型:

    <?php
    $testModel = YourModel::get();
    die(var_dump($testModel));
    ?>
    
于 2013-10-02T17:30:58.953 回答
0

这些在 Laravel 4.2 上对我有用

<?php namespace Vendor\Package;

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

class Product extends Eloquent {

    ...

}
于 2014-10-07T12:03:59.970 回答