Php “关键”;名称“;对于带有键的数组";1、2“;GirManageParcsBundle:Parcs:manage.html.twig中不存在
我在SQL中有一个请求:Php “关键”;名称“;对于带有键的数组";1、2“;GirManageParcsBundle:Parcs:manage.html.twig中不存在,php,symfony,doctrine-orm,twig,dql,Php,Symfony,Doctrine Orm,Twig,Dql,我在SQL中有一个请求: SELECT count(distinct b.id), count(distinct e.id) FROM building, ensembles e, `parcs` p WHERE p.id = "1" AND e.parcs_id = p.id AND e.id = b.ensembles_id 这是我如何在我的Symfony项目中,在控制器ManageController.php中使用此请求的: class ManageController extends
SELECT count(distinct b.id), count(distinct e.id) FROM building, ensembles e, `parcs` p WHERE p.id = "1" AND e.parcs_id = p.id AND e.id = b.ensembles_id
这是我如何在我的Symfony项目中,在控制器ManageController.php
中使用此请求的:
class ManageController extends Controller
{
public function indexAction()
{
$em=$this->getDoctrine()->getManager();
$parc = $em->getRepository('GirDatabaseBundle:Parcs');
$ensemble = $em->getRepository('GirDatabaseBundle:Ensembles');
$building = $em->getRepository('GirDatabaseBundle:Buildings');
$query = $em->createQuery(
'SELECT p.name, count(distinct b.id), count(distinct e.id)
FROM GirDatabaseBundle:Buildings b, GirDatabaseBundle:Ensembles e, GirDatabaseBundle:Parcs p
WHERE p.id in (:id)
AND e.parcs = p.id
AND e.id = b.ensembles
GROUP BY p.id')
->setParameter('id', '1');
$parc = $query->getResult();
return $this->render('GirManageParcsBundle:Parcs:manage.html.twig', array('parc' => $parc ));
}
但是,当我启动我的html.twig页面manage.html.twig
时,我有一个错误:
第35行的GirGestionPatrimoinesBundle:Parcs:manage.html.twig中不存在键为“1,2”的数组的键“name”
下面是我的小树枝的代码:
{# CONTENT #}
<div class="panel-body">
<p class="text-justify">
<div class="jumbotron">
<h4><u>Situation actuelle</u></h4>
<p>
<h5>PARCS</h5>
{% for parcs in parc %}
<h4> {{ parcs.name}} </h4>
{% endfor %}
</p>
</div>
</p>
这是集成类/实体代码:
/**
* Ensembles
*
* @ORM\Table(name="ensembles")
* @ORM\Entity
*/
class Ensembles
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="referenceClient", type="string", length=150, nullable=false)
*/
private $referenceclient;
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* Set referenceclient
*
* @param string $referenceclient
* @return Ensembles
*/
public function setReferenceclient($referenceclient)
{
$this->referenceclient = $referenceclient;
return $this;
}
/**
* Get referenceclient
*
* @return string
*/
public function getReferenceclient()
{
return $this->referenceclient;
}
/**
* @ORM\ManyToOne(targetEntity="Gir\DatabaseBundle\Entity\Parcs")
* @ORM\JoinColumn(nullable=false)
*/
private $parcs;
/**
* Set parcs
*
* @param \Gir\DatabaseBundle\Entity\Parcs $parcs
* @return Ensembles
*/
public function setParcs(\Gir\DatabaseBundle\Entity\Parcs $parcs)
{
$this->parcs = $parcs;
return $this;
}
/**
* Get parcs
*
* @return \Gir\DatabaseBundle\Entity\Parcs
*/
public function getParcs()
{
return $this->parcs
class Batiments
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="referenceBatiment", type="string", length=150, nullable=false)
*/
private $referencebatiment;
/**
* @ORM\ManyToOne(targetEntity="Gir\DatabaseBundle\Entity\Ensembles")
* @ORM\JoinColumn(nullable=false)
*/
private $ensembles;
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* Set referencebatiment
*
* @param string $referencebatiment
* @return Batiments
*/
public function setReferencebatiment($referencebatiment)
{
$this->referencebatiment = $referencebatiment;
return $this;
}
/**
* Get referencebatiment
*
* @return string
*/
public function getReferencebatiment()
{
return $this->referencebatiment;
}
/**
* Set ensembles
*
* @param \Gir\DatabaseBundle\Entity\Ensembles $ensembles
* @return Batiments
*/
public function setEnsembles(\Gir\DatabaseBundle\Entity\Ensembles $ensembles)
{
$this->ensembles = $ensembles;
return $this;
}
/**
* Get ensembles
*
* @return \Gir\DatabaseBundle\Entity\Ensembles
*/
public function getEnsembles()
{
return $this->ensembles;
}
这是最后一个,建筑物类别/实体代码:
/**
* Ensembles
*
* @ORM\Table(name="ensembles")
* @ORM\Entity
*/
class Ensembles
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="referenceClient", type="string", length=150, nullable=false)
*/
private $referenceclient;
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* Set referenceclient
*
* @param string $referenceclient
* @return Ensembles
*/
public function setReferenceclient($referenceclient)
{
$this->referenceclient = $referenceclient;
return $this;
}
/**
* Get referenceclient
*
* @return string
*/
public function getReferenceclient()
{
return $this->referenceclient;
}
/**
* @ORM\ManyToOne(targetEntity="Gir\DatabaseBundle\Entity\Parcs")
* @ORM\JoinColumn(nullable=false)
*/
private $parcs;
/**
* Set parcs
*
* @param \Gir\DatabaseBundle\Entity\Parcs $parcs
* @return Ensembles
*/
public function setParcs(\Gir\DatabaseBundle\Entity\Parcs $parcs)
{
$this->parcs = $parcs;
return $this;
}
/**
* Get parcs
*
* @return \Gir\DatabaseBundle\Entity\Parcs
*/
public function getParcs()
{
return $this->parcs
class Batiments
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="referenceBatiment", type="string", length=150, nullable=false)
*/
private $referencebatiment;
/**
* @ORM\ManyToOne(targetEntity="Gir\DatabaseBundle\Entity\Ensembles")
* @ORM\JoinColumn(nullable=false)
*/
private $ensembles;
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* Set referencebatiment
*
* @param string $referencebatiment
* @return Batiments
*/
public function setReferencebatiment($referencebatiment)
{
$this->referencebatiment = $referencebatiment;
return $this;
}
/**
* Get referencebatiment
*
* @return string
*/
public function getReferencebatiment()
{
return $this->referencebatiment;
}
/**
* Set ensembles
*
* @param \Gir\DatabaseBundle\Entity\Ensembles $ensembles
* @return Batiments
*/
public function setEnsembles(\Gir\DatabaseBundle\Entity\Ensembles $ensembles)
{
$this->ensembles = $ensembles;
return $this;
}
/**
* Get ensembles
*
* @return \Gir\DatabaseBundle\Entity\Ensembles
*/
public function getEnsembles()
{
return $this->ensembles;
}
要回答riska的评论:
对于{{dump(parc)}}
,它返回我:
array (size=1)
0 =>
array (size=2)
'bcnt' => string '307' (length=3)
'ecnt' => string '104' (length=3)
对于{{dump(parcs)}}
,我有:
array (size=2)
'bcnt' => string '307' (length=3)
'ecnt' => string '104' (length=3)
为避免此错误,请确保在Twig中使用的变量已定义且不为null:
{# CONTENT #}
<div class="panel-body">
<p class="text-justify">
<div class="jumbotron">
<h4><u>Situation actuelle</u></h4>
<p>
<h5>PARCS</h5>
{% for parc in parcs %}
{% if parc.name is defined and parc.name is not null %}
<h4> {{ parcs.name}} </h4>
{% else %}
<h4> Parc without name</h4>
{% endif %}
{% endfor %}
</p>
</div>
</p>
{CONTENT}
阿克图埃勒局势
帕克斯
{parc%中的parc为%s}
{%如果定义了parc.name且parc.name不为空%}
{{parcs.name}
{%else%}
没有名字的公园
{%endif%}
{%endfor%}
顺便说一句,您的for循环中有一个输入错误,请查看上面的代码。我想您忘记给列加别名了:
SELECT count(distinct b.id) AS bcnt, count(distinct e.id) AS ecnt
...
现在,您应该能够访问以下变量:
{% for parcs in parc %}
<h4> {{ parcs.bcnt }} </h4>
<h4> {{ parcs.ecnt }} </h4>
{% endfor %}
{%用于parc%中的parc}
{{parcs.bcnt}
{{parcs.ecnt}
{%endfor%}
很抱歉输入错误,我尝试了您的代码。我的错误被纠正了。但是,它不显示我想要的数据。顺便说一下,它没有显示任何内容。我想显示属于parc的建筑物和集合的数量,当然还要显示parc的名称。感谢您的帮助。为此,您必须向我们展示您的类和/或类类型,以查看您的实体之间的关系。请查看riska对集合和建筑的回答;)如果我同意你的建议,我有一个错误:“.twig行35中不存在键为“0”的数组的键“bcnt”。我认为这不是解决方案。谢谢。嗯,真奇怪。尝试在twig中使用var_dump来更好地查看parc和parcs中的数据:{{dump(parc)}{{dump(parcs)}}根据您的更新(以及twig文档:),我编写的解决方案应该可以工作。你清除缓存了吗?是的,我清除了缓存。而且,我刚刚看到我犯了一个打字错误。所以它给了我一个好结果。对不起,真的。。。现在我想说出帕洛阿尔托研究中心的名字,然后是属于他的团队和建筑的数量。一个如何使用twig的想法?按名称分组在查询中,将分组条件放入select(例如,选择e.name作为名称,…按e.name分组)。然后,您可以访问twig中的名称,就像访问总和一样。