besogonskiy
@besogonskiy
работаю php laravel разработчиком.

Как простой вложенный запрос перевести в Eloquent?

Имеется один простой mysql запрос. Но мне надо перевести его в Eloquent. Все перерыл - никак не найду подходящую конструкцию. Вот сам запрос:

select c1.name, c1.id, (
    select count(*)
    from categories as c2
    where c2.id = c1.id
    group by c2.id) as rating
from categories c1;


Если через query builde делать - там все просто. но мне нужно именно Eloquent чтобы подтянуть связанные сущности во вложенных массивах.
  • Вопрос задан
  • 653 просмотра
Решения вопроса 1
Vadiok
@Vadiok
Веб разработчик
Написал код, но не проверял работает ли, но идея такая:
// Создаем связь, можно методом в модели, можно на лету, как в примере
Category::resolveRelationUsing('categoryForRating', fn($q) => $orderModel->belongsTo(Category::class, 'id', 'id'));
Category::
	withCount('categoryForRating as rating')
	->get(['name', 'id', 'rating_count as rating']);
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
profesor08
@profesor08
Надо создать модели, и в моделях создавать подобные связи.
Ответ написан
Комментировать
pLavrenov
@pLavrenov
Разработка сайтов
AmdY
@AmdY
PHP и прочие вебштучки
Ваш запрос выглядит как бред, возможно в нём ошибка и джойнить нужно по parant_id, если делаете дерево.
Тогда как вам подсказали withCount и релейшин на себя же прописать
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы