$qb = $em->createQueryBuilder();
$qb->select('u')
->from('AppBundle:User','u')
->join('AppBundle:Profile', 'p')
->add(
'where',
$qb->expr()
->between(
'p.rank',
':min',
':max'
)
)
->andWhere('u.id != :id')
->setParameters(array('min' => $minimumRank, 'max' => $maximumRank, 'id' => $user->getId()));
$query = $qb->getQuery();
$players = $query->getResult();
Проблема с моим запросом заключается в том, что мой результат всегда возвращает каждую запись из базы данных. Я попытался придумать другое решение, но безрезультатно. Я ищу некоторые предложения. Если вам нужна дополнительная информация, пожалуйста, дайте мне знать.doctrine beetwen expr не работает для меня
User.php /** * @ORM\Column(type="integer") * @ORM\Id * @ORM\GeneratedValue(strategy="AUTO") */ protected $id; /** * @ORM\Column(type="string", length=25, unique=true) * * @Assert\NotBlank( * message = "Nie podałeś nazwy użytkownika" *) * @Assert\Length( * min = 3, * minMessage = "Twoja nazwa użytkownika powinna składać się z minimum {{ limit }} znaków", *) */ protected $username; /** * @ORM\Column(type="string", length=64) * @Assert\NotBlank( * message = "Nie podałeś hasła" *) * @Assert\Length( * min = 6, * minMessage = "Twoje hasło powinno składać się z minimum {{ limit }} znaków", *) */ protected $password; /** * @ORM\Column(type="string", length=60, unique=true) * @Assert\NotBlank( * message = "Nie podałeś adresu e-mail" *) * @Assert\Email( * message = "Wprowadzony adres-email jest nieprawidłowy" *) */ protected $email; /** * @ORM\Column(name="enabled", type="boolean") */ protected $enabled; /** * @ORM\Column(type="string", length=64) */ protected $confirmationToken; /** * @ORM\Column(type="integer") */ protected $time; /** * @ORM\Column(type="datetime", nullable=true) */ protected $lastLogin; /** * @ORM\Column(type="boolean") */ protected $locked; /** * @ORM\Column(type="boolean") */ protected $expired; protected $expiresAt; protected $credentialsExpired; protected $credentialsExpireAt; /** * @ORM\Column(type="boolean") */ protected $firstLogin; /** * @ORM\Column(type="datetime", nullable=true) */ protected $passwordRequestedAt; /** * @ORM\OneToOne(targetEntity="Profile", orphanRemoval=true, inversedBy="user") */ protected $profile;
profile.php /** * @var integer * * @ORM\Column(name="id", type="integer") * @ORM\Id * @ORM\GeneratedValue(strategy="AUTO") */ private $id; /** * @var string * * @ORM\Column(name="steamID", type="string", length=255, nullable=true) */ private $steamID; /** * @var string * * @ORM\Column(name="name", type="string", length=255, nullable=true) */ private $name; /** * @var string * * @ORM\Column(name="surname", type="string", length=255, nullable=true) */ private $surname; /** * @var string * * @ORM\Column(name="rank", type="integer", nullable=true) */ private $rank; /** *@ORM\OneToOne(targetEntity="User", mappedBy="profile") */ private $user;
Принимали ли вы посмотрите на то, как запрос компилируется в SQL ('$ qb-> GetQuery() -> getSql()') или DQL ('$ qb-> getDql()')? Что я делаю, это то, что вы ожидаете. Если они выглядят корректно, проверьте, какие значения вы передаете как параметры. – prodigitalson
'string 'SELECT a0_.id AS id0, a0_.username AS username1, a0_.password AS password2, a0_.email AS email3, a0_.enabled AS enabled4, a0_.confirmation_token AS confirm_token5, a0_.time AS time6, a0_.last_login AS last_login7, a0_.locked AS locked8, a0_.expired AS expired9, a0_.first_login AS first_login10, a0_.password_requested_at AS password_requested_at11, a0_.profile_id AS profile_id12 FROM app_users a0_ INNER JOIN app_profiles a1_ ON ((a1_.rank МЕЖДУ? И?) AND a0_.id <>?) '(Length = 480) ' – nix9
значения не передаются в – nix9