在包上使用模型

时间:2013-10-02 08:37:57

标签: laravel laravel-4 models packages

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

问题是我的模型clases不是自动加载。

2 个答案:

答案 0 :(得分: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));
    ?>
    

答案 1 :(得分:0)

这些适用于Laravel 4.2

<?php namespace Vendor\Package;

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

class Product extends Eloquent {

    ...

}