У меня есть поиск человека (Employee), который должен вернуть список людей по имени, фамилии, дате рождения и некоторым другим параметрам. поиск отлично работает для каждого параметра, исключенного для параметров даты, например, даты рождения. мой код контроллера:
$aWorker = new Worker(); $searchWorkerForm = $this->createFormBuilder($aWorker) ->add('omang', 'text', array('required' => false)) ->add('workerName', 'text', array('required' => false)) ->add('workerSurname', 'text', array('required' => false)) ->add('birthDay', 'date', array('required' => false, 'years' => range(1950, 2020))) ->add('dateOfEmployment', 'date', array('required' => false)) ->add('search', 'submit') ->getForm(); //Handle Request if ($request->getMethod() == 'POST') $searchWorkerForm->handleRequest($request); $aWorkerList = $this->getDoctrine() ->getRepository('OsdRetireBundle:Worker') ->findByPersonDetails($aWorker->getOmang(), $aWorker->getWorkerName(), $aWorker->getWorkerSurname(), $aWorker->getBirthDay(), $aWorker->getDateOfEmployment()); //...
Функция findByPersonDetails:
public function findByPersonDetails($omang, $WorkerName, $workerSurname, $birthDay, $dateOfEmployment){ $qqq = $this->getEntityManager() ->createQuery('SELECT w FROM OsdRetireBundle:Worker w WHERE w.omang LIKE :omang AND w.workerName LIKE :WorkerName AND w.workerSurname LIKE :workerSurname AND w.birthDay LIKE :birthDay AND w.dateOfEmployment LIKE :dateOfEmployment') ->setParameter('omang', '%'.$omang.'%') ->setParameter('WorkerName', '%'.$WorkerName.'%') ->setParameter('workerSurname', '%'.$workerSurname.'%') ->setParameter('birthDay', '%'.$birthDay.'%') ->setParameter('dateOfEmployment', '%'.$dateOfEmployment.'%') ->getResult(); return $qqq; }
Ошибка следующая:
Catchable Fatal Error: Object of class DateTime could not be converted to string in /var/www/Org/src/Osd/RetireBundle/Entity/WorkerRepository.php line 27 500 Internal Server Error - ContextErrorException
Я должен преобразовать с моей собственной функцией дату в строку? если да, то где мне это сделать, чтобы сделать его многоразовым? любой рабочий пример? Я думал, что Доктрина смогла сделать это автоматически. Поговорите с вами.