我做了一個EntityRepository.php文件的查詢,查詢經過並給我,例如一些匹配的實體:替代logicalNot() - 沒有做什麼預期
100
我的新目標是過濾掉所有具有屬性feedback.appointmentState.uid = 4
的實體。
,當我把這個以下限制:
$query->equals('feedback.appointmentState.uid', 4)
它給了我
0
現在來,我不明白的部分 - 當我改變部分:
$query->logicalNot($query->equals('feedback.appointmentState.uid', 4))
我得到
90
它不是這樣工作的,因爲它應該輸出100,因爲沒有匹配那個過濾器的實體 - 但是我怎麼能達到這個最好的方式呢? 爲了澄清我在這裏的代碼示例(當然我沒有取消註釋在同一時間都評論部分)
public function countByCompany($company) {
$query = $this->createQuery();
$constraints[] = $query->equals('deleted', 0);
$constraints[] = $query->equals('hidden', 0);
$constraints[] = $query->equals('socialworker.company', $company);
$total = $query->matching($query->logicalAnd($constraints))->count();
// $total is 30
// $constraints[] = $query->equals('feedback.appointmentState.uid', 4);
// $totalCancelled = $query->matching($query->logicalAnd($constraints))->count();
// $totalCancelled is 0
// $constraints[] = $query->logicalNot($query->equals('feedback.appointmentState.uid', 4));
// $totalWithoutCancelled = $query->matching($query->logicalAnd($constraints))->count();
// $totalWithoutCancelled is 15
return false;
}
我會相信我的直覺,並說90是正確的結果,你必須弄清楚爲什麼你期望別的東西。 –