Например, у меня есть модель класса. Я хочу чтобы это было 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 они не ставят свои поля в черты, а только некоторые из них. Конечно, это работает, пока эти поля существуют в классе, где использовалась наша черта. Но мы теряем некоторые преимущества в автозаполнении IDE и делаем наш код неоднозначным.
По умолчанию все модели уже имеют свойство created_at
а также updated_at
поскольку Illuminate\Database\Eloquent\Model
уже использовал Illuminate\Database\Eloquent\Concerns\HasTimestamps
которые определяют getCreatedAtColumn
а также getUpdatedAtColumn
методы Метод HasTimestamps getCreatedAtColumn
Вам не нужно определять свой собственный HasTimestamps
это не важно, потому что все реализации, обеспечивающие такое поведение, уже существуют
Других решений пока нет …