Вставка Laravel не сохранена столбцы create_at, updated_at - PullRequest
0 голосов
/ 01 июня 2018

У меня есть модель календаря.Я не хочу вставлять массовые данные.

$data = [
   [
       'weekday' => 1,
       'status'  => 'active'
   ]
   .......
];
$calendar->insert($data)

, но в db create_at и updated_at равно null Почему ??;

Ответы [ 4 ]

0 голосов
/ 01 июня 2018

Если вы INSIST при использовании вставки и автоматического обновления меток времени, Laravel не предлагает этого.

, вам нужно сделать это вручную со стороны кода.как кто-то упоминает в каком-то ответе как:

'created_at' => $calendar->freshTimestamp(),
'updated_at' => $calendar->freshTimestamp()

Я столкнулся с подобной проблемой в одном проекте, поэтому я хотел вставить, но без добавления временных меток в мой код каждый раз, когда я вставляю это.если вам нужно использовать вставку без добавления временных меток вручную.Вы можете изменить файл миграции и добавить временную метку:

$table->timestamp('created_at')->default(DB::raw('CURRENT_TIMESTAMP'));
$table->timestamp('updated_at')->default(DB::raw('CURRENT_TIMESTAMP'));

теперь база данных будет обрабатывать созданные в и обновленные в момент вставки.

create_at будет равен updated_at иравным текущей отметке времени

, тогда при сохранении () laravel будет обрабатывать обновление updated_at

0 голосов
/ 01 июня 2018

Одним из решений является это

$data = [
   [
       'weekday' => 1,
       'status'  => 'active',
       'created_at' => $calendar->freshTimestamp(),
       'updated_at' => $calendar->freshTimestamp()
   ]
   .......
];
$calendar->insert($data)

2 решение In Model

/**
 *
 */
public static function boot()
{
    parent::boot();
    static::creating(function ($model) {
        $model->created_at = $model->freshTimestamp();
        $model->updated_at = $model->freshTimestamp();
    });
}
0 голосов
/ 01 июня 2018

Eloquent ожидает, что в ваших таблицах будут присутствовать столбцы create_at и updated_at.

Если вы хотите, чтобы Eloquent автоматически управлял этими столбцами, установите для свойства $ timestamps вашей модели значение true, а также добавьте имя столбца в защищенный $заполняемый = [];массив.

public $timestamps = true;
0 голосов
/ 01 июня 2018

Поскольку вы вставляете данные, созданный_обновленный и обновленный_аталог будет автоматически заполняться только при использовании ->save().

. Убедитесь, что вы добавили эти поля в массив protected $fillable = [];.

Вы также можете использовать $calendar->update($data) или

$calendar->fill($data);
$calendar->save();

Надеюсь, я понял ваш вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...