我在这个框架上与symfony3和im初学者一起从事项目
这是我的问题
我在数据库中有一个名为groupe的表,在我有一个称为member的列中,我已在该组中存储了成员的ID
table database

在第一步中,我想从分组表中获取这些ID,然后将其爆炸以将查询发送到我的数据库,以获取nom,prenom和与该ID相对应的配置文件图片发送
所以我在存储库中做了两个动作

这是我在存储库中的第一个操作,它允许我从数据库中的表成员中获取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();

}


这是我存储库中的seccond函数,它使我可以从先前的字符串中提取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个项目my template

最佳答案

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

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 Tutoriel学习如何使用Symfony进行开发

关于php - 如何从返回3维数组并在symfony 3的 Twig View 中设置值的查询中获取数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42071611/

10-11 03:10
查看更多