@ettychel

Сортировка отношения в laravel через load() не работает, что не так?

Доброго дня!
Столкнулся с такой проблемой. У меня динамически подтягивается связь, она уже есть в основном запросе, но когда она подтягивается динамически мне необходимо отсортировать по этой связи. В документации почитал можно через load(), но не тут то было... Call to undefined method Illuminate\Database\Eloquent\Builder::load()
Почему в модели так ругается, класс то я подключил.
Теперь сам запрос в студию, пропишу без логики когда он там подключается, потому как не считаю, что там может быть какой то косяк, ибо все работает как только комментирую:
$this->startCondition()
                    ->select($columns)
                    ->orderBy('id','desc')
                    ->with(['statusName:status_id,status_name',
                            'workerName:id,fio', 
                            'armReq:id,title,user_id,priority,range_priority',
                            'getNameReqPeople'])
// Это нельзя вынести за запрос Начало
                    ->whereHas('armReq', function($q) {
                        $q->where('column', 'like', '%Значение%');
                    })
                    ->load(['armReq' => function ($q){
                        $q->orderBy('range_priority', 'desc');
                    }]);
// Конец
                    ->paginate(12);


Такс... Перечитал документацию, вроде если на модели сделать all(), то получится коллекция, значит это я косячу с load(), хотя этот метод есть в классе...
как то можно это обойти? Есть одно условие нельзя сдвинуть блок отмеченный комментарием за пределы запроса
  • Вопрос задан
  • 437 просмотров
Решения вопроса 1
@ettychel Автор вопроса
Решил задачу, конечно я считаю, что это не лучшее решение и поэтому жду каких либо предложений, но данный способ работает:

$columns = ['arm_jobs.id',
                    'worker',
                    'task',
                    'status',
                    'date_offer',
                    'start_time',
                    'deadline',
                    'timework'
        ];

$this->startCondition()
                    ->select($columns)
                    ->with(['statusName:status_id,status_name',
                            'workerName:id,fio', 
                            'armReq:id,title,user_id,priority,range_priority',
                            'getNameReqPeople'])
                    ->whereHas('armReq', function($q) {
                        $q->where('column', 'like', '%Значение%');
                    })
                   ->join('arm_req_posts as req', 'req.id', '=', 'arm_jobs.id')
                                            ->orderBy('req.range_priority','desc')
                    ->orderBy('arm_jobs.id','desc')
                    ->paginate(12);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
18 апр. 2024, в 12:52
500000 руб./за проект
18 апр. 2024, в 12:48
6000 руб./за проект
18 апр. 2024, в 12:41
3000 руб./за проект