我可以使用Eloquent模型作为功能齐全的类吗?

时间:2013-06-01 02:22:06

标签: php laravel laravel-4 eloquent

我刚刚学习Laravel 4而且我不确定Eloquent模型是如何工作的。我很清楚它们是与数据库交互的好方法,但是我可以在扩展Eloquent的类中定义构造函数和函数,以便将它用于数据库交互以外吗?

1 个答案:

答案 0 :(得分:1)

是的!扩展Eloquent的类不会使它成为仅用于雄辩目的的类。你已经意识到了类扩展的概念。类扩展可以简单地从另一个现有类向ANY类添加功能。在这种情况下,Eloquent。

你可以选择你已经拥有的任何模型,并且明天决定要将它与Eloquent一起使用并简单地扩展它。您的原始课程仍然是您原来的课程并且工作原理相同。如果父类具有相同名称的内容,原始类中的任何方法或属性都将覆盖其父级(Eloquent)。

事实上,在扩展Eloquent的类中创建其他方法是创建执行各种酷炫功能的强大模型的真正方法。我在我的用户模型中创建方法,例如,计算他们的生日之前的一天。而不是将生日列拉入控制器然后使用PHP进行计算,我只是有一个方法,如User :: daysUntilBirthday();

如果您使用构造函数并扩展Eloquent,请确保您仍然关闭Eloquent的构造函数。

class MyModel extends Eloquent {

   public function __construct($attributes = array(), $exists = false)
   {
      parent::__construct($attributes, $exists); // This will fire off Eloquent's constructor.
      // Your construct code.
   }
}