Solusi 1:Menggunakan cakupan global untuk menambahkan bidang ke pernyataan pilihan Anda
Satu-satunya masalah dengan kolom virtual adalah Eloquent akan mencoba memperbaruinya jika Anda tidak mencegahnya. Anda dapat mengecualikannya dari array $fillable dan menggunakan cakupan global di model Anda untuk menambahkan kolom virtual, seperti:
protected static function boot()
{
parent::boot();
static::addGlobalScope('next_action', function (Builder $builder) {
$builder->addSelect(DB::raw('DATE_ADD(updated_at, INTERVAL days DAY) AS next_action'));
});
}
Anda harus ingat bahwa ini akan memasangkan Model Anda ke MySQL karena fungsi tanggal yang Anda gunakan tidak akan berfungsi di database seperti sqlite.
Solusi 2:Menggunakan tampilan MySQL
Biasanya apa yang saya lakukan ketika saya memiliki beberapa bidang terhitung adalah membuat tampilan MySQL. Buat tampilan dengan semua bidang terhitung yang Anda inginkan, lalu Anda dapat membuat model Eloquent baru untuk tampilan tersebut tanpa harus mengkhawatirkan cakupan kueri.
Satu-satunya peringatan adalah Anda tentu saja tidak dapat menggunakan buat/perbarui/hapus pada model ini, tetapi jika Anda hanya menggunakan model untuk tujuan tampilan, itu seharusnya tidak menjadi masalah.