でNULL値を数えていない私は、このようなクエリがある:はDoctrineは比較
$thism = new \DateTime('first day of this month midnight');
$parameters = array('thism' => $thism, 'user' => $user,'status'=>1);
return $this->createQueryBuilder('q')
->select('count(q)')
->where('q.createdAt > :thism')
->andWhere('q.user = :user')
->andWhere('q.completed != :status')
->setParameters($parameters)
->getQuery()
->getSingleScalarResult();
これは、今月からすべての私の不完全なオブジェクトをカウントする必要があります。問題はq.completed != :status
です。これにより、completed=NULL
のオブジェクトはカウントされません。で完成したブール値
class Quote
{
/**
* @var boolean
*
* @ORM\Column(name="completed", type="boolean", nullable=true)
*/
private $completed;
}
は私が何か間違ったことを行っている、またはなぜDoctrineはTRUEとは異なるものとしてNULLをカウントしませんか?
私は'status'=>1
を1,true,TRUE
に置き換えようとしましたが、引用符の有無にかかわらず、効果はありません。
フォーマット済みのクエリ:MySQLで
SELECT count(q0_.id) AS sclr_0 FROM quote q0_ WHERE q0_.created_at > ? AND q0_.user_id = ? AND q0_.completed <> ?
Parameters: ['2016-04-01 00:00:00', '1', 1]
SELECT count(q0_.id) AS sclr_0 FROM quote q0_ WHERE q0_.created_at > '2016-04-01 00:00:00' AND q0_.user_id = '1' AND q0_.completed <> 1;
生成されるSQLはどのように見えますか? (あなたはログでそれを見ることができます) – Miro
@Miroは質問にそれを加えました。 –