我刚刚学习 Laravel 4,我不确定 Eloquent 模型是如何工作的。我很清楚,它们是与数据库交互的好方法,但是我可以在扩展 Eloquent 的类上定义构造函数和函数以将其用于数据库交互之外的用途吗?
问问题
397 次
1 回答
1
是的!扩展 Eloquent 的类不会使其成为仅用于 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.
}
}
于 2013-06-01T02:32:27.100 回答