在包上使用模型

Car*_*oce 4 packages models laravel laravel-4

我正在尝试使用laravel包.我创建了MyVendor/MyPackage

路由,控制器,过滤器已经在运行.这是我的包的类图:

"classmap": [
        "src/migrations",
        "src/controllers",
        "src/seeds",
        "src/models"
    ],
Run Code Online (Sandbox Code Playgroud)

这就是我的模型:

namespace MyVendor\MyPackage\Models;             
class MyModel extends \Illuminate\Database\Eloquent\Model {   
}
Run Code Online (Sandbox Code Playgroud)

这是我的控制器里面的代码,它位于命名空间MyVendor\MyPackage中.

$test = new models\MyModel;      
Run Code Online (Sandbox Code Playgroud)

我收到此错误:找不到类'MyVendor\MyPackage\models\MyModel'

我无法弄清楚为什么.我是命名空间的新手,所以也许它与此有关.我尝试使用composer update,composer dump-autoload(在我的包中)并且仍然无法找到我的模型.

如果我用get_declared_classes()获取声明的类,我无法在那里看到我的模型.

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

小智 7

试试这个:

  1. models在包中创建目录并将其添加到包的类映射中
  2. 添加YourModel.php具有以下内容的模型:

    <?php
    // Note no namespace
    
    use \Illuminate\Database\Eloquent\Model as Eloquent;
    
    class YourModel extends Eloquent {
        //
    }
    
    Run Code Online (Sandbox Code Playgroud)
  3. composer dump-autoload首先从您的包目录运行,然后从根目录运行
  4. 将它放在routes.php文件的顶部来测试你的模型:

    <?php
    $testModel = YourModel::get();
    die(var_dump($testModel));
    ?>
    
    Run Code Online (Sandbox Code Playgroud)

  • 小提示:Laravel有辅助函数dd(); 使用它代替die(var_dump()).http://laravel.com/docs/4.2/helpers#miscellaneous (2认同)