Я работаю над Symfony 3.4 в PHP 5.6.
Вот контекст моей проблемы:
У меня есть «информационная» таблица, которая содержит несколько строк. Я хочу отсортировать эти строки и отобразить их в соответствии с определенным столбцом под названием «Зона». Таким образом, цель состоит в том, чтобы, например,
"Зона 1"
* Строки информации, соответствующие этой области "
"Зона 2"
* Строки информации, соответствующие этой области "
...
Я реализовал свои функции в репозитории, а также сделал макет под Twig. Все работало Все, что мне нужно было сделать, это оптимизировать мой код на контроллере, чтобы он стал чище.
Моя идея была поэтому:
- Получить массив, содержащий все существующие отдельные области, по запросу.
- Цикл этого массива с использованием каждого значения массива в качестве параметра для запроса SQL, который извлекает строки, соответствующие переданному полю, и извлекает их в переменную массива
- Создайте array_push () из массива каждой зоны, в другом массиве, который будет содержать массив каждой зоны.
Но я не могу. Это мой код
Репозиторий:
public function getInformationsZone($zone)
{
$queryBuilder = $this->createQueryBuilder("i")
->where("i.zone = :zone")
->orderBy("i.updatedAt","DESC")
->orderBy("i.criticite","DESC")
->setParameter('zone',$zone);
return $queryBuilder->getQuery()->getResult();
}
public function getZonesActives()
{
$queryBuilder = $this->createQueryBuilder("i")
->select("i.zone")
->distinct(true);
return $queryBuilder->getQuery()->getResult();
}
* +1025 * контроллер * * тысяча двадцать-шесть
/**
* Lists all information entities.
*
* @Route("/", name="informations_index")
* @Method("GET")
*/
public function indexAction()
{
$em = $this->getDoctrine()->getManager();
$information = $em->getRepository('PagesBundle:Information')->findAll();
$listZones = $this->getDoctrine()->getRepository('PagesBundle:Information')->getZonesActives();
$tabInfos = array();
foreach($listZones as $key=>$value)
{
$zone = $this->getDoctrine()->getRepository('PagesBundle:Information')->getInformationsZone($value);
array_push($tabInfos,$zone);
}
// This is what i did just before
/* $infosZone1 = $this->getDoctrine()->getRepository('PagesBundle:Information')->getInformationsZone("Zone 1");
$infosZone2 = $this->getDoctrine()->getRepository('PagesBundle:Information')->getInformationsZone("Zone 2");
$infosZone3 = $this->getDoctrine()->getRepository('PagesBundle:Information')->getInformationsZone("Zone 3");
$tabInfos = array($infosZone1,$infosZone2,$infosZone3);*/
return $this->render('information/index.html.twig', array(
/* 'information' => $information,
'infosZone1'=> $infosZone1,
'infosZone2'=> $infosZone2,
'infosZone3'=> $infosZone3,*/
'tabInfos'=>$tabInfos,
));
}
У меня есть эта ошибка:
Возникла исключительная ситуация при выполнении 'SELECT i0_.id AS id_0, i0_.contenu AS contenu_1, i0_.updated_at AS updated_at_2, i0_.zone AS zone_3, i0_.titre AS titre_4, i0_.criticite AS critite_5 FROM i0_ информация i0_0 .zone =? ЗАКАЗАТЬ по i0_.criticite DESC 'с параметрами ["Зона 1"]:
SQLSTATE [HY093]: недопустимый номер параметра: параметр не был определен