gpt4 book ai didi

php - 通过路由参数过滤和学说查询获取并显示正确的数据

转载 作者:行者123 更新时间:2023-11-29 12:09:51 27 4
gpt4 key购买 nike

首先,我有这个 SQl 请求:

SELECT  pc.id, pc.nom_point_comptage, e.id, e.nom_ensemble, p.id, p.nom_parc
FROM points_comptage pc , ensembles e , parcs_immobilier p
WHERE pc.ensembles_id = e.id
AND e.parcs_immobilier_id = p.id

此查询允许我获取属于特定parcensembles中的points comptage

因此,在我的 symfony Controller 中,我用原则创建了一个 DQL。这是 Controller 的代码:

/**
*
* @Route("/gestioncompteurs/pointscomptageByparcs", name="dataTablePointsComptageParc")
* @Method("get")
*/
public function pointsComptageByParcAction($nomParc)
{
$em=$this->getDoctrine()->getManager();

$query = $em->createQuery('SELECT p.nomParc, e.nomEnsemble, pc.invariantPointComptage /*and more like my SQL request...*/
FROM MySpaceMyBundle:ParcsImmobilier p, MySpaceMyBundle:Ensembles e, MySpaceMyBundle:PointsComptage pc
WHERE pc.ensembles = e.id
AND e.parcsImmobilier = p.id');

$pointComptage = $query->getResult();

return $this->render('MySpaceMyBundle:PointsComptage:dataTablePointsComptage.html.twig', array(
'pointComptage' => $pointComptage));
}

但在我的 Twig 中,首先我需要按 parc 进行过滤,因此我创建一个选择标签,其中包含我的所有 parc,如下所示:

<select class="form-control input" id="filterByParc" name="filterByParc">
<option value="" disabled selected>sélectionnez un parc</option>
{% for parcs in parc %}
<option value="{{ path('dataTablePointsComptageParc', {'nomParc': parcs.nomParc}) }}">{{ parcs.nomParc }}</option>
{% endfor %}
</select>

如您所见,我的选择标记中所选选项的值是 View 的路径(url)。因为我需要在 javascript 中返回按我选择的 parc(路由参数)进行过滤的数据表。

一切正常,也就是说,我的 Controller 和 JavaScript 正确显示了我的数据表,但没有数据。

phpMyAdmin 上,我的请求运行良好,但在我的 Controller 中使用 Doctrine不行

准确解释我想要做什么以及我需要什么:

first: I select a parc name in my select tag in my view; second: my choice returns me a datatable filtering by the name of my parc I choose, so the datas in my table have to be all the points comptage in my ensembles owned to the parc I choose first in the select tag.

有人知道我的问题出在哪里吗?

最佳答案

我认为这是完全有道理的。

Doctrine 通过 DQL(而非 SQL)对实体进行操作。至少您可以尝试使用 getArrayResult() 而不是 getResult()

事实上,您可能应该使用 DBAL Connection :

$em = .... // Your EntityManager
$sql = " .... ";
$pointComptage = $em->getConnection()->fetchAssoc($sql);

return $this->render('MySpaceMyBundle:PointsComptage:dataTablePointsComptage.html.twig', array(
'pointComptage' => $pointComptage));

希望这有帮助...

关于php - 通过路由参数过滤和学说查询获取并显示正确的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30888930/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com