Touching Timestamps Dalam Laravel

Published on 03 July

Dalam artikel ini kita akan membahas hal yang mungkin pernah Anda lakukan yang itu bisa dilakukan dengan mudah hanya dengan 1 baris kode.


Touching

Ada kalanya kita ingin update data, tetapi hanya untuk field updated_at nya saja, bisa jadi butuh karena untuk pengurutan.

Jadi dari pada kita lakukan update seperti biasanya.

$user->update(['updated_at' => now()]);

Maka kita bisa ganti dengan cara touch seperti

$user->touch();

Maka dia akan melakukan hal yang sama dengan yang di atas.

Touching Parent Timestamps

Ketika kita berbicara tentang forum, biasa nya semua thread akan di order dari kapan thread itu dibalas. Mungkin ketika Anda ingin melakukan hal itu bisa dengan cara:

$thread = Thread::find(5);
$thread->update(['updated_at' => now()]);
$thread->comments()->create([
    // ...
]);

Dan harusnya, ketika ada komentar baru, maka thread juga pasti di perbarui. Namun, jika Anda bisa membuat lebih simpel, mengapa harus seperti itu. Oleh karena itu, kita bisa membuat property $touches sebenarnya di dalam model komentar nya seperti:

class Comment extends Model
{
    /**
     * All of the relationships to be touched.
     *
     * @var array
     */
    protected $touches = ['thread'];
 
    /**
     * Get the thread that the comment belongs to.
     */
    public function thread()
    {
        return $this->belongsTo(Thread::class);
    }
}

Jadi harusnya, jika Ada komentar baru di dalam thread tersebut, harusnya untuk field updated_at akan diperbarui juga.

Dan pastinya, untuk menampilkan thread sudah pasti Anda menggunakan order dari updated_at seperti:

Thread::query()->latest('updated_at')->get();

Sampai sini dulu artikel nya, see you next time.