На предыдущий вопрос Я (мы, потому что вы, ребята, помогли мне) сделал мутатор, чтобы добавить столбец к результатам, которые я получаю из базы данных.
Теперь моя проблема: как я могу упорядочить результаты по созданному атрибуту?
Вот оно:
public function getRatingAttribute()
{
return $this->reviews()
->selectRaw('AVG(reviews.rating) as aggregate')
->pluck('aggregate');
}
DB не может отсортировать его для вас, так как данные-мутаторы извлекаются после того, как основной SQL-запрос уже выполнен. Вам нужно отсортировать результаты в php, используя методы Collection, например,$my_results->sortByDesc('rating');
Если вам нужно использовать нумерацию страниц, то это большая проблема, и вам, вероятно, будет лучше использовать соединение, чем мутаторы для этого.
Других решений пока нет …