Что Laravel красноречивый отключить все метки
Я в процессе преобразования одного из наших веб-приложений из CodeIgniter в Laravel. Однако в данный момент мы не хотим добавлять updated_at
/created_at
поля для всех наших таблиц, поскольку у нас есть класс ведения журнала, который делает все это более подробно для нас уже.
Я знаю, что могу установить $timestamps = false;
in:
VendorlaravelframeworksrcilluminateDatebaseEloquentModel.php
однако я бы предпочел не менять основной файл для Laravel, или у всех моих моделей есть это наверху. Есть ли способ отключить это в другом месте для всех моделей?
8 ответов:
вы либо должны объявить
public $timestamps = false;
в каждой модели или создайте базовую модель, определите ее там, и пусть все ваши модели расширяют ее вместо красноречивой. Просто голые в виду сводные таблицы должны иметь метки времени, если вы используете Eloquent.обновление: обратите внимание, что метки времени больше не требуются в сводных таблицах после Laravel v3.
обновление: вы также можете отключить метки, удалив
$table->timestamps()
от миграции.
Если вам нужно только отключить обновление updated_at просто добавьте этот метод в свою модель.
public function setUpdatedAtAttribute($value) { // to Disable updated_at }
это переопределит родительский метод setUpdatedAtAttribute (). created_at будет работать как обычно. Таким же образом вы можете написать метод, чтобы отключить обновление created_at только.
Если вы используете 5.5.x:
const UPDATED_AT = null;
и для поля 'created_at', вы можете использовать:
const CREATED_AT = null;
убедитесь, что вы находитесь на последней версии. (Это было сломано в Laravel 5.5.0 и исправлено снова в 5.5.5).
Красноречивый Модели:
class User extends Model { protected $table = 'users'; public $timestamps = false; }
или просто попробуйте это
$users = new Users(); $users->timestamps = false; $users->name = 'John Doe'; $users->email = 'johndoe@example.com'; $users->save();
переопределить функции
setUpdatedAt()
иgetUpdatedAtColumn()
моделиpublic function setUpdatedAt($value) { //Do-nothing } public function getUpdatedAtColumn() { //Do-nothing }
просто объявить
public
переменной типа timestamp в false и все будет работать отлично.
public $timestamps = false;
Если вы хотите удалить временные метки из существующей модели, как упоминалось ранее, поместите это в свою модель:
public $timestamps = false;
также создайте миграцию со следующим кодом в методе up () и запустите его:
Schema::table('your_model_table', function (Blueprint $table) { $table->dropTimestamps(); });