@alexmixaylov

Как вытащить несколько значений в одном запросе?

Вопрос наверное некорректно поставлен, но я что то не пойму с какой стороны к нему подходить

в одной таблице есть несколько значений с ID-ками категорий
хотя разные поля у сущности но категории лежат в одной таблице
я сделал такой костыль, но понимаю что это не очень
туплю - не понимаю как оптимизировать запрос
$qb
            ->select('s.id')
            ->addSelect('s.title')
            ->addSelect('s.quantity')
            ->addSelect('s.productCategoryId')
            ->addSelect('cl.name as productCategoryName')
            ->addSelect('a.name as accessoryCategoryName')
            ->addSelect('s.products')
            ->addSelect('s.attributes')
            ->addSelect('s.accessoryCategoryId')
            ->addSelect('s.accessories')
            ->from(Scenario::class, 's')
            ->leftJoin(Category::class, 'cl', 'WITH', 's.productCategoryId = cl.id_category')
            ->leftJoin(Category::class, 'a', 'WITH', 's.accessoryCategoryId = a.id_category')
            ->where('s.id = :id')
            ->setParameter('id', $id);

        $query = $qb->getQuery();


здесь я второй раз джойню таблицу чтобы вытащить нужное значение

->leftJoin(Category::class, 'cl', 'WITH', 's.productCategoryId = cl.id_category')
->leftJoin(Category::class, 'a', 'WITH', 's.accessoryCategoryId = a.id_category')

кажется должен быть другой метод
  • Вопрос задан
  • 192 просмотра
Пригласить эксперта
Ваш ответ на вопрос

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

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