Laravel version: 5.7
I have one class Sessions
. where I have used appends for the attribute.
class Session extends Model { protected $appends = ['session_type']; public function getSessionTypeAttribute() { $startTime = $this->getOriginal()['start_time']; return $startTime; } }
My query:
$sessions = Session::groupBy(DB::raw('YEAR(created_at), MONTH(created_at), visibility')) ->select(DB::raw('COUNT(id) as total,MONTH(created_at) as month,MONTHNAME(created_at) as month_name,visibility')) ->orderBy('created_at', 'ASC') ->get();
Here I have selected fields that I need but it gives me the following error.
Undefined index: start_time
So here appends are giving error because I have not selected start_time. How to solve this issue?
Advertisement
Answer
Here I got a solution. I make it optional
public function getSessionTypeAttribute() { $startTime = $this->getOriginal()['start_time'] ?? ''; return $startTime; }
This works properly. It gives the proper results.