Acá esta el enlace en español en stackoverflow: https://es.stackoverflow.com/questions/211532/como-tener-un-repositorio-personalizado-no-asociado-a-una-entidad-en-symfony
Esta pregunta la coloque en la versión de ingles de stackoverflow: https://stackoverflow.com/questions/53090535/having-a-custom-repository-not-associated-to-an-entity-in-symfony
Luego de varias preguntas pude tener la respuesta que necesitaba, sobre la misma genere un resumen, espero les sirva: https://stackoverflow.com/a/53176838/2400373
Uso symfony 3.3.x . De esta manera solucione el problema
Archivo service.yml:
//service.yml
services:
app.queriesmanager:
class: AppBundle\Services\QueriesManager
autowire: true
Archivo AppBundle\Services\QueriesManager.php
//AppBundle\Services\QueriesManager.php
entityManager = $entityManager;
}
public function searchAdvance($var,$var1,$var2,$var3)
{
$dql1 = "";
$dql2 = "";
$dql = "SELECT pl
FROM BackendBundle:Products p
JOIN BackendBundle:Pricelist pl
WITH p.peachitemid = pl.peachitemid
WHERE p.hasimages = 1
AND p.active = 'FALSE'
AND p.imagesamazon1 = 1
AND p.imagesamazon2 = 1
AND (p.descriptionforsales like '%$var%' OR p.itemid like '%$var%')";
if ($var1 != "select") {
$dql1 = " AND p.newcategory='$var1' AND p.newsubcategory='$var2' ";
}
if ($var3 == "150") {
$dql2 = " AND pl.retail < 150";
}
if ($var3 == "200") {
$dql2 = " AND pl.retail > 150 AND pl.retail < 250 ";
}
if ($var3 == "250") {
$dql2 = " AND pl.retail > 250 ";
}
$dql1 .= $dql2;
$dql .= $dql1;
$query=$this->entityManager->createQuery($dql);
$query = $query->getResult();
return $query;
}
}
Archivo DefaultController.php
//Use the service in controller
$query=$this->get('app.queriesmanager')->searchAdvance($var,$var1,$var2,$var3);
Espero les pueda ayudar.