首页 > 解决方案 > 模型内部的特征

问题描述

例如,我有一个模型类。我希望它是Timestampable。这意味着模型必须具有created_at,updated_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字段移动到模型中?

可验证的特征(Laravel)

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

标签: phplaraveloopcoding-styletraits

解决方案


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

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


推荐阅读