tutorial latest ext php mysql symfony doctrine

latest - mongodb php pecl



Doctrine 2 Dynamic Query (2)

Estoy tratando de hacer una consulta de búsqueda dinámica con doctrina. Y no está funcionando

$em = $this->getDoctrine()->getEntityManager(); $city = ''new york''; $minprice = 500; $maxprice = 1000; $testquery = "SELECT p FROM AcmeTestBundle:Car p WHERE p.city = :city"; $testparam = array(''city'' => $city,); if ($minprice != '''') { if ($maxprice != '''') { $testquery .= " and p.price BETWEEN :minprice AND :maxprice"; $testparam .= array( ''minprice'' => $minprice, ''maxprice'' => $maxprice, ); } } $testquery .= " ORDER BY p.price ASC"; $query = $em->createQuery($testquery)->setParameters($testparam); $result = $query->getResult();

¿Hay una mejor manera de hacer esto?


En php, no puedes usar .= Con matrices. En cambio, haz

$testparam[''minprice''] = $minprice; $testparam[''maxprice''] = $maxprice;


En principio, el enfoque que ha tomado está bien. Sin embargo, puedo ver al menos dos cosas mal.

1) Doctrine no admite BETWEEN, por lo que necesitará algo como:

$testquery .= " and p.price >= :minprice AND p.price <= :maxprice";

2) The. = Es solo un operador de cadena, no puede usarlo con matrices. Así que tendrás que hacer algo como esto (podrías hacer una matriz_mergen pero eso parece exagerado):

$testParam[''minPrice''] = $minPrice; $testParam[''maxPrice''] = $maxPrice;