У меня есть несколько сообщений в блогах в моей базе данных, и я использую критерии доктрины для их фильтрации. Если я пишу критерии, которые соответствуют некоторым сообщениям, все работает идеально.
Представьте, что есть 3 пользователя (Пользователь 1, Пользователь 2, Пользователь 3) и есть несколько сообщений, помеченных как личные от Пользователя 1 и пользователя 2.
Это мой php-код:
$criteria = Criteria::create();
$criteria->Where($criteria->expr()->eq('private', 1);
$criteria->andWhere($criteria->expr()->eq('author', $author));
$posts=$service->findPostBy($criteria);
return array(
'page' => $page,
'posts'=>$posts,
'filter' => $form->createView()
);
/*findPostBy calls Doctrine matching function*/
public function matching(Criteria $criteria)
{
$persister = $this->_em->getUnitOfWork()->getEntityPersister($this->_entityName);
return new ArrayCollection($persister->loadCriteria($criteria));
}
Если я запрашиваю личные сообщения пользователя 1, он создает функциональный запрос и возвращает сообщения, которые я хочу. Но если я попрошу личные сообщения пользователя 3, он вернет все сообщения в моей базе данных без какой-либо фильтрации. Как я могу узнать, работают ли мои критерии, если они не возвращают пустой результат в случае отсутствия совпадений.