Rumah >rangka kerja php >Laravel >Bagaimana untuk membatalkan create_at dalam laravel

Bagaimana untuk membatalkan create_at dalam laravel

PHPz
PHPzasal
2023-04-21 10:06:191071semak imbas

Dalam rangka kerja Laravel, setiap model Eloquent mengandungi dua medan cap masa: create_at dan updated_at secara lalai. Kedua-dua medan ini merekodkan masa penciptaan dan kemas kini model. Kelebihan ini ialah mudah untuk merekodkan masa kemas kini data dan melaksanakan beberapa fungsi, seperti menyusun mengikut masa penciptaan dan masa kemas kini, dsb.

Walau bagaimanapun, dalam sesetengah senario, kami mungkin tidak memerlukan dua medan cap masa ini. Sebagai contoh, beberapa jadual pangkalan data lama mungkin tidak mempunyai dua medan ini, atau kami tidak perlu merekodkan masa penciptaan dan kemas kini data sama sekali. Dalam kes ini, kami boleh membatalkan created_at dan updated_at dengan menambahkan dua baris kod berikut pada model:

public $timestamps = false;

Melakukan ini akan membatalkan medan created_at dan updated_at dalam model. Walau bagaimanapun, perlu diingatkan bahawa membatalkan dua medan cap masa ini akan menyebabkan beberapa fungsi terbina dalam Laravel gagal. Sebagai contoh, model tidak boleh diisih mengikut medan create_at dan updated_at, dan ia juga tidak boleh merekod masa penciptaan dan kemas kini data secara automatik.

Jika kita hanya perlu membatalkan salah satu medan cap masa, seperti hanya create_at, maka kita boleh melakukan ini:

// 只取消 created_at
const UPDATED_AT = 'updated_at';

Kaedah ini adalah untuk menetapkan pemalar UPDATED_AT kepada rentetan updated_at , dan lalai Dalam kes ini nilai UPDATED_AT dikemas kini_at, jadi melakukan ini hanya membatalkan create_at.

Selepas kami membatalkan medan cap masa ini, jika kami perlu merekodkan masa pembuatan data kami sendiri dan masa kemas kini, maka kami perlu menulis kod secara manual untuk mencapainya. Berikut ialah contoh:

// 在模型中实现自定义时间戳字段
protected $dateFormat = 'U';
protected static function boot()
{
    parent::boot();
    static::creating(function ($model) {
        $model->create_time = $model->freshTimestamp();
    });
    static::updating(function ($model) {
        $model->update_time = $model->freshTimestamp();
    });
}

Dalam contoh ini, kami mentakrifkan dua medan, create_time dan update_time, dalam model untuk merekodkan masa penciptaan dan masa kemas kini data. Pada masa yang sama, kami mengubah suai format masa lalai dengan mentakrifkan atribut $dateFormat. Dalam kaedah but, kami menetapkan nilai kepada create_time dan update_time melalui acara mencipta dan mengemas kini. Kaedah freshTimestamp boleh mendapatkan cap masa terkini.

Untuk meringkaskan, membatalkan create_at dan updated_at boleh dicapai dengan menambahkan $timestamps = false dalam model atau mengubah suai pemalar UPDATED_AT. Membatalkan medan cap masa ini akan menjejaskan beberapa fungsi terbina dalam dalam Laravel, seperti pengisihan dan rakaman masa automatik, dsb. Jika anda perlu melaksanakan rakaman cap masa sendiri, anda boleh melakukannya dengan menulis kod secara manual.

Atas ialah kandungan terperinci Bagaimana untuk membatalkan create_at dalam laravel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn