Я работаю с Doctrine 2, и я придумал ситуацию, в которой я хочу делать некоторые запросы только среди нескольких типов пользователей.И условия в Доктрине
Type Status Active
UserA 0 0
UserB 0 1
UserC 1 1
UserD 1 0
Все запросы я хочу сделать включает Пользователь A, Пользователь C и D. Пользовательский Одним из примеров является этот следующий запрос:
public function countMonth(){
$date = new \Datetime('now');
$newDate = $date->format('Y-m');
$this->qb = $this->em->createQueryBuilder();
$this->qb->select('count(u) as cant')
->from('models\User', 'u')
->where('u.creation_date like ?1')
->andWhere('u.status <> 0 AND u.active <> 1'); //users B
$this->qb->setParameter(1,"$newDate%");
$query = $this->qb->getQuery();
return $query->getSingleScalarResult();
}
Я хочу знать, как сделать запрос, который бросает меня обратно все пользователи, но пользователь B. Потому что тот, который я написал, просто дает мне userD.
Я знаю, что могу сделать это, чтобы получить всех пользователей, кроме пользователей, но это раздражает меня, чтобы написать две строки кода, чтобы спросить об этом. Есть ли более упрощенный способ?
public function countMonth(){
$orX = $this->qb->expr()->orX();
$andX = $this->qb->expr()->andX();
$date = new \Datetime('now');
$newDate = $date->format('Y-m');
$this->qb = $this->em->createQueryBuilder();
$this->qb->select('count(u) as cant')
->from('models\User', 'u');
$andX->add('u.creation_date like ?1');
$orX->add('u.status = 1 AND u.active = 1 OR u.active = 0');
$orX->add('u.status = 0 AND u.active = 0');
$andX->add($orX);
$this->qb->add('where', $andX);
$this->qb->setParameter(1,"$newDate%");
$query = $this->qb->getQuery();
return $query->getSingleScalarResult();
}
Таким образом, любой успех? – fkupper