Oplossing 1:een globaal bereik gebruiken om het veld toe te voegen aan uw geselecteerde uitspraken
Het enige probleem met virtuele kolommen is dat Eloquent zal proberen ze bij te werken als je dit niet verhindert. Je kunt het uitsluiten van de $fillable array en een global scope gebruiken in uw model om de virtuele kolom toe te voegen, zoiets als:
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'));
});
}
U moet er rekening mee houden dat hierdoor uw model aan MySQL wordt gekoppeld, aangezien de datumfuncties die u gebruikt niet werken in databases zoals sqlite.
Oplossing 2:een MySQL-weergave gebruiken
Wat ik normaal gesproken doe als ik meerdere berekende velden heb, is een MySQL-weergave maken. Maak de weergave met alle berekende velden die u wilt, dan kunt u een nieuw welsprekend model voor die weergave maken zonder dat u zich zorgen hoeft te maken over querybereiken.
Het enige voorbehoud is dat u maken/bijwerken/verwijderen op dit model natuurlijk niet kunt gebruiken, maar als u het model alleen voor weergavedoeleinden gebruikt, zou dat geen probleem moeten zijn.