模型内部的特征

Traits inside Models

例如我有一个模型class。我希望它是 Timestampable。这意味着模型必须具有 created_atupdated_at 字段和它们的吸气剂。

<?php

trait Timestampable {

    protected $created_at;
    protected $updated_at;

    public function getCreatedAt() {}
    public function getUpdatedAt() {}   

}

class User extends Model {

    use Timestampable;

    protected $id;
    protected $name;
}

可以吗?或者我必须将 timestampable 字段移动到模型中?

Authenticatable Trait (Laravel)

在Laravel中,他们不将字段放在特征中,而只是其中的一些。当然,当这些字段存在于使用我们的特征的 class 中时,它当然会起作用。但是我们在 IDE 自动完成方面失去了一些优势,并使我们的代码变得模棱两可。

默认情况下所有模型都已经 属性 created_atupdated_at 因为 Illuminate\Database\Eloquent\Model 已经使用了 Illuminate\Database\Eloquent\Concerns\HasTimestamps 定义了 getCreatedAtColumngetUpdatedAtColumn 方法 HasTimestamps method getCreatedAtColumn

您不必定义自己的HasTimestamps这并不重要,因为提供该行为的所有实现都已经存在