Черты внутри моделей - PullRequest
       18

Черты внутри моделей

0 голосов
/ 24 сентября 2018

Например, у меня есть класс модели.Я хочу, чтобы это было 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 полей в модель?

Authenticatable Trait (Laravel)

В Laravel они не помещают свои поля в черты, нотолько некоторые из них.Конечно, это работает, пока эти поля существуют в классе, где использовалась наша черта.Но мы теряем некоторые преимущества в автозаполнении IDE и делаем наш код неоднозначным.

1 Ответ

0 голосов
/ 24 сентября 2018

По умолчанию все модели уже имеют свойства created_at и updated_at, поскольку Illuminate\Database\Eloquent\Model уже использует Illuminate\Database\Eloquent\Concerns\HasTimestamps, которые определяют методы getCreatedAtColumn и getUpdatedAtColumn Метод HasTimestamps getCreatedAtColumn

Вам не нужно определять свой собственный HasTimestamps, это не важно, потому что все реализации, обеспечивающие такое поведение, уже существуют

...