@lemonlimelike

Как сделать такой запрос в symfony?

Всем привет! Имеется такой sql запрос
select * from comment where id in (select child_comment_id from parent_child_comment where parent_comment_id = 12);


В подзапросе внешний ключ это child_comment_id.
Начал этот запрос переписывать под symfony и появилась проблема.
Вот что у меня получилось:
public function findChildsComment($id)
    {
        $entityManager = $this->getEntityManager();

        $query = $entityManager->createQuery("
        select comment from App\Entity\Comment comment 
        where comment.id in (select child.childCommentId from App\Entity\ParentChildComment child 
        where child.parentCommentId = :id)
        ")->setParameters([
            'id' => $id
        ]);

        return $query->getResult();
    }


И вот ошибка:
"[Semantical Error] line 0, col 99 near 'childCommentId': Error: Invalid PathExpression. Must be a StateFieldPathExpression.",

5fef91d0bd675734279390.png

Я конечно понял, что нужно убрать childCommentId в подзапросе и оставить child. Но тогда неправильный результат получается. Насколько я понял, то вместо child ставится поле id а нужно чтоб было поле childCommentId. Как это сделать?
  • Вопрос задан
  • 195 просмотров
Решения вопроса 2
@eandr_67
web-программист (*AMP, Go, JavaScript, вёрстка).
А если переписать без in - через JOIN - не будет проще?
SELECT DISTINCT comment.*
FROM comment
INNER JOIN parent_child_comment
  ON parent_child_comment.child_comment_id = comment.id
WHERE parent_child_comment.parent_comment_id = 12
Ответ написан
index0h
@index0h
PHP, Golang. https://github.com/index0h
1. Для вашего случая лучше джоин.
2. Не используйте билдер запросов для сложных запросов, потом подерживать будет сложнее.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы