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;