在模型中包含特征的最佳方法是什么?

时间:2014-05-14 10:45:27

标签: laravel laravel-4

我有自己的用户模型,需要一些权限。我创建了/app/models/Permissions.php里面的特质。现在我需要在/app/models/MyUser.php中使用它。如何在Laravel风格中做到这一点?

2 个答案:

答案 0 :(得分:3)

我会这样做。

1。模型

<?php namespace Models;

// app/models/MyUser.php

class MyUser extends \Eloquent {
    use \Traits\Permissions;
    /* ... */
}

2。创建特质

<?php namespace Traits;

// app/traits/Permissions.php

trait Permissions {
    /* ... */
}

3. 修改composer.json并将其添加到classmap

"app/traits",

4. 为了使Laravel可以自动加载特征,您需要转储自动加载文件并生成新文件

php artisan dump

答案 1 :(得分:0)

谢谢你的例子Andreyco。

补充这一点有助于为模型本身添加一个功能。例如,这将输入Trait。在第2步

public function scopeGetMyFunction($query, Request $request)
{
     //more code....
     $query->get();    
}

因此我们可以将它用作控制器上模型的一部分。

public function index(Request $request)
    {
        $models = \App\Models\User::getMyFunction($request);
        return $models;
    }