如何从返回三维数组的查询中获取数据,并在symfony 3中的trick视图上设置值



im正在使用symfony3进行项目,并且im是该框架的初学者这是我的问题我在数据库中有一个名为groupe的表,我有一个称为member的列,我在其中存储了该组中成员的id表数据库

在第一步中,我想从groupe表中获取这些id,然后分解它们,将查询发送到我的数据库,以获取与id send相对应的nom、prenoman和配置文件图片所以我在我的存储库中做了两个操作

这是我在存储库中的第一个操作,它允许我从数据库中的表membre中获取id字符串

public function getmemberstring($id){
$membres = $this->getEntityManager()
->createQuery('SELECT g.membres FROM GroupGroupBundle:Groupe g  
WHERE g.id =:id')
->setParameter('id',$id);

return $membres->getResult();
} 

这是我在存储库中的第二个函数,它允许我从以前的字符串中提取id,并向数据库发送请求,以获得我想要的信息

public function getmemberlist($list){
$memberId = explode('-',$list);

$membres = array();
foreach($memberId as $value){
$nom = $this->getEntityManager()
->createQuery('SELECT m.nom FROM MainBundle:Member m
WHERE m.id =:id')
->setParameter('id',$value);
$nom = $nom->getResult();
$prenom = $this->getEntityManager()
->createQuery('SELECT m.prenom FROM MainBundle:Member m
WHERE m.id =:id')
->setParameter('id',$value);
$prenom = $prenom->getResult();

$pic = $this->getEntityManager()
->createQuery('SELECT m.profile_pic FROM MainBundle:Member m
WHERE m.id =:id')
->setParameter('id',$value);
$pic = $pic->getResult();

array_push($membres,$nom,$prenom,$pic);

}
return $membres;
}

这是我的控制器

public function membreGroupeAction()
{
$em = $this->getDoctrine()->getManager();
$str = $em->getRepository("GroupGroupBundle:Groupe")->findOneBy(array('id'=>1));
$member = $em->getRepository("GroupGroupBundle:Groupe")->getmemberlist($str->getMembres());

return $this->render('@GroupGroup/layout/membres.html.twig',array("mem"=>$member));
}

这是我的树枝视图,我想在那里显示我的控制器发送

{% extends '@GroupGroup/Group/groupe_mur_base.html.twig' %}
{% block panel %}
{% for i in  mem %}
{% for j in i %}
{% for t in j  %}
{{ t }}
{% endfor %}
{% endfor %}
{% endfor %}
<div class="jumbotron list-content" style="display: block;">
<ul class="list-group">
<li href="#" class="list-group-item title">
Liste des Membres
</li>
<li href="#" class="list-group-item text-left" id="listmembre"      style="display: block;">
<div class="image">
<img class="img-thumbnail" src="http://bootdey.com/img/Content/User_for_snippets.png">
<span id="membername">Juan guillermo cuadrado</span>
<div><button id="btnajout" class="btn btn-primary">Ajouter</button></div>
</div>
<div class="break"></div>
</li>

这就是我的数据在模板中的显示方式,我想对它们进行样式设置,并在li列表中为每个用户只获得3个项目,就像下面的模板我的模板一样

您可以在一个查询中完成所有操作

public function getmemberlist($list){
$memberId = explode('-',$list);
$membres = $this->getEntityManager()
->createQuery(
'SELECT m.nom, m.prenom, m.profile_pic
FROM MainBundle:Member m
WHERE m.id IN(:id)'
)
->setParameter('id',array_values($memberId))
->getResult()
;            
return $membres;
}

或者在仓库中更好

public function getmemberlist($list){
$memberId = explode('-',$list);
$membres = $this->createQueryBuilder('m')
->where('m.id IN(:id)')
->setParameter('id',array_values($memberId))
->getQuery()
->getResult()
;            
return $membres;
}

通过这种方式,您将获得一个一维数组,其中包含组中的所有用户。

你的树枝

{% extends '@GroupGroup/Group/groupe_mur_base.html.twig' %}
{% block panel %}
<div class="jumbotron list-content" style="display: block;">
<ul class="list-group">
<li href="#" class="list-group-item title">
Liste des Membres
</li>
{% for m in mem %}
<li href="{{ path('your_path_to_member_details') }}" class="list-group-item text-left" id="listmembre"      style="display: block;">
<div class="image">
<img class="img-thumbnail" src="{{ asset(m.profile_pic) }}"/>
<span class="membername">
{{ m.prenom }} {{ m.nom }}
</span> 
</div>
<div class="break"></div>
</li>
{% endfor %}
</ul>
<div>
<button id="btnajout" class="btn btn-primary">
Ajouter
</button>
</div>
</div>
{% endblock %}

看看你的代码,它似乎是你的法语或比利时语,你应该去OpenClassrooms Symfony Tutorial学习如何使用Symfony 进行开发

最新更新