Why is my Laravel Eloquent accessor not showing up in the response?

This is probably because ReviewDateIso is not an actual column and therefore will not show up in the model collections...you can access it directly by calling the method directly

$model->getReviewDateIsoAttribute()

According to the docs accessors a ways of changing the value of a column before it is returned to the method that queried it.

If you want it to show up when you call the collection as Json append it to the output with

protected $appends = ['name_of_attribute'];

I tried queries in tinker and with dd method. So I got confused since I cant view my new accessor in the attribute list.

I thought I missed something. Then later I noticed appended attributes are shown separately when we dd the query result than the usual attribute JSON.

I lost time thinking my accessor is not working. Its just I`m not checking in the right way or right place. So I``m attaching the following image, if anyone gets stuck on accessors like me, this might help them.

enter image description here


You should be adding it to the $appends array. It isn't spinning through all available methods looking for getXXXXXAttribute. The other one is used because it is an accessor for an actual attribute, this one is not an actual attribute.

class YourModel ....
{
     protected $appends = ['review_date_iso'];
     ...
}

Laravel 5.5 Docs - Eloquent - Serialization - Appending Values to JSON