Использования Symfony2, но его более просто MySQL проблемы ...Symfony2 множественные оставил присоединиться, внутреннее соединение
Я думаю, что у меня есть хорошие схемы таблицы (только важные поля) (код Пояснения):
пользователи (идентификатор) статусы (идентификатор) нравится (идентификатор, user_id, status_id) комментарии (идентификатор, user_id, status_id)
Я делаю большой выбор.
пытается это:
$qb=$this->createQueryBuilder('s')
->addSelect('u')
->addSelect('u2')
->addSelect('u3')
->addSelect('l')
->addSelect('c')
->addSelect('s2')
->where('s.user = :user')
->setParameter('user', $user)
->innerJoin('s.user', 'u')
->leftJoin('s.likes', 'l')
->leftJoin('l.user', 'u2')
->leftJoin('s.comments', 'c')
->leftJoin('c.user', 'u3')
->leftJoin('c.status', 's2')
->orderBy('s.time', 'DESC')
->setMaxResults(15);
Но результат 15the же статусы ... НЕПРАВИЛЬНО.
Он работал хорошо, когда я выбирал только статусы ... любит статусы .. и пользователи (авторы подобных и статусов)
Как что:
SELECT * FROM statuses s0_
INNER JOIN users t1_ ON s0_.user_id = t1_.id
LEFT JOIN status_likes s2_ ON s0_.id = s2_.status_id
INNER JOIN users t3_ ON s2_.user_id = t3_.id
WHERE s0_.user_id = 25 ORDER BY s0_.time DESC LIMIT 15
, который работает очень хорошо, но, как могу ли я реализовать другие комментарии и (пользователи -> авторы комментариев) выберите ТАМ? ...
Первое время слушания о пагинацией ... я 2.2.3 я думаю .. и мне нужно сделать это с меньшим количеством запросов, как posiblle и с лучшими характеристиками ... у меня есть мой запрос в собственном репозитории, и когда я посмотрел вашу ссылку на страницы ... я претипурован, что происходит .. (2AM) не могли бы вы показать мне мою ситуацию более дружелюбным примером с небольшим объяснением или это будет слишком много работы? BTW: когда я УДАЛЕНА из моего запроса. ПРЕДУПРЕЖДЕНИЕ, я получаю все статусы ... НО каждый статус возвращается abou 30times ??? кажется, не очень хорош wroten ... или? – EnchanterIO
Пробовал ли код в верхней части документации для разбивки на страницы? Я подозреваю, что вы можете использовать DQL как SQL, и это не одно и то же. Вы можете получить тот же объект $ query, в примере, вытащив запрос из вашего построителя запросов, как это. $ Qb-> GetQuery(); Подайте это в Paginator в соответствии с примером и посмотрите, поможет ли это. – calumbrodie
thx! хм, похоже, что разбиение на страницы работает. Но когда я пытаюсь подсчитать ($ paginator), я вижу: 50.Что это значит? + что вы говорите на столько же возвращенных строк, когда я пытался просто SQL в phpmyadmin ?? (сначала вопрос из комментария). Для информации, такой как идентификатор статуса ... теперь я получаю доступ к $ status-> getId() и не $ status ['id'] (раньше у меня был getArrayResult в запросе) ... но это нормально, похоже, работает, я просто не уверен насчет выступлений сейчас? от 13ms я имею 260ms !! первый запрос выбирает отдельный идентификатор статусов. а второй - выбор всех данных из этих идентификаторов. HM ??? – EnchanterIO