【问题标题】:Can I use an Eloquent model as a fully featured class?我可以将 Eloquent 模型用作功能齐全的课程吗?
【发布时间】:2013-05-27 22:26:45
【问题描述】:

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

【问题讨论】:

    标签: php laravel laravel-4 eloquent


    【解决方案1】:

    是的!扩展 Eloquent 的类不会使其成为仅用于 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.
       }
    }
    

    【讨论】:

    • 那么,如果我在 eloquent 模型上定义了构造函数,为什么我无法为数据库播种?我会在数据库中得到一行,但里面什么都没有。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-14
    • 2022-01-26
    • 1970-01-01
    • 2021-04-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多