如何在2个Eloquent模型之间共享功能

时间:2013-12-30 01:32:46

标签: laravel laravel-4 eloquent

我有2个雄辩的模型:项目和任务。他们都有截止日期,我有3个截止日期相关的函数,这两个类必须有,但我不想有重复的代码。

我提出的唯一解决方案是将Eloquent扩展到某个类DeadlineEloquent并使用这个新类扩展Project和Task。但这听起来不是最好的解决方案,因为Laravel没有地方存储这样的类(它不是模型,我不知道它是什么)我知道。在这种情况下你会怎么做?

1 个答案:

答案 0 :(得分:4)

Laravel并没有真正存放任何东西的地方,您可以随意使用应用程序文件夹和文件做任何事情。但是,如果您仍然拥有app/models文件夹,则可以创建BaseModel并存储在其中。这是大多数人的选择:

class BaseModel extends Eloquent {

    public function whatever()
    {

    }

}

class Project extends BaseModel {

}

class Project extends BaseModel {

}

如果您使用的是PHP 5.5,则可以使用特征:

trait Functions {

    public function whatever()
    {

    }

}

class Project extends BaseModel {

    use Functions;

}

class Project extends BaseModel {

    use Functions;

}