Добрый вечер! Ребят у меня есть таблица с заказами, так же есть таблица с логами, в которой мы храним всякое разное. В том числе и дату смены платежного статуса. Мне нужно отсортировать таблицу orders по последней связанной с orders записью в logs.
Например вчера сменили платежный статус 2 раза и сегодня 1 раз, отсортировать нужно по дате той записи в логах, которая была сделана сегодня. Есть для этого небольшой скоуп, в целом я все сделал исходя из документации laravel.
public function scopeFilteredByPStatus($query)
{
if (request()->get('pstatus')) {
return $query->select('orders.*')
->leftJoin('logs', function ($join) {
return $join->on('orders.id', '=', 'logs.entity_id')->latest()->limit(1);
})
->groupBy('logs.entity_id')
->where('orders.payment_status', request()->get('pstatus'))
->orderBy(DB::raw('logs.created_at'), 'DESC');
}
}
Тем не менее я получаю результаты в разнобой, сортировка то происходит происходит ибо выдача изменилась с таким скоупом, но она все еще не та которую я рассчитываю получить. Отправьте меня в правильном направлении пожалуйста, потому, что я в самом деле в некотором замешательстве...
Спасибо!