Laravel Eloquent Relations: ->latest()

latest() is a function defined in Illuminate\Database\Query\Builder Class. It's job is very simple. This is how it is defined.

public function latest($column = 'created_at')
{
    return $this->orderBy($column, 'desc');
} 

So, It will just orderBy with the column you provide in descending order with the default column will be created_at.


Add ->get() on your code like this:

public function activity()
{
    return $this->hasMany('App\Activity')
        ->with(['user', 'subject'])
        ->latest()->get();
}

->latest() fetches the most recent set of data from the Database. In short, it sorts the data fetched, using the 'created_at' column to chronologically order the data.