Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 获取细枝(或控制器)中每个记录的相关实体编号_Php_Symfony_Templates_Doctrine_Twig - Fatal编程技术网

Php 获取细枝(或控制器)中每个记录的相关实体编号

Php 获取细枝(或控制器)中每个记录的相关实体编号,php,symfony,templates,doctrine,twig,Php,Symfony,Templates,Doctrine,Twig,我有一节人民课和一节团体课。通过“群体”字段,我知道每个人都属于哪个群体,但我不知道群体中有哪些人。为此,我必须通过查询people表来查找组中的所有人员 以下是我课程的相关部分: class People { /** * @ORM\Id * @ORM\GeneratedValue(strategy="AUTO") * @ORM\Column(name="id",type="integer") */ protected $id;

我有一节人民课和一节团体课。通过“群体”字段,我知道每个人都属于哪个群体,但我不知道群体中有哪些人。为此,我必须通过查询people表来查找组中的所有人员

以下是我课程的相关部分:

class People
{
    /**
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     * @ORM\Column(name="id",type="integer")
     */
    protected $id;


    /**
     * @ORM\ManyToOne(targetEntity="Bundle\Entity\Groups")
     * @ORM\JoinColumn(referencedColumnName="id")
     */
    protected $group;

.....
这是我小组课的一部分

class Group
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;
...
我想做的是计算每个组中有多少人,然后在一个小树枝模板中传递,如下所示:

  {% for group in allGroups %}
            <li>name: {{group.name}} </li>
            <li>date:{{ group.createdAt|date('d-m-Y H:i:s') }}</li>
            <li>Number of people: {{ group.peopleNo}}</li>
            <hr>
   {% endfor %}
我不确定如何在twig中循环显示每个组的编号,因为它是按从0开始的顺序索引的,而不是按组id索引的。我认为如果一个组没有人就可以了,如果找不到记录,我就说它有0人。信息是正确的,我有两个组,一个有1人,另一个有3人,但他们的id是1和2,而不是0和1

下面是我的树枝的样子,foreach中的foreach看起来像是坏习惯:

   {% for group in groups %}
            <li> {{ group .name|e }}</li>
            <li>{{ group .createdAt|date('d-m-Y H:i:s') }}</li>
            <li>
                {% for key, ppno in peopleno %}
                    {% if ppno [key] is defined %}
                        {% if ppno [key]['id']==ticket.id %}
                            people: {{ peopleno [key]['total_peoples'] }}
                        {% endif %}
                    {% else %}
                        people:0
                    {% endif %}

                {% endfor %}
            </li>
            <hr>
        {% endfor %}
{%用于组中的组%}
  • {{group.name | e}}
  • {{group.createdAt|date('d-m-Y H:i:s')}
  • {%用于密钥,peopleno%中的ppno} {%如果定义了ppno[key]%} {%if-ppno[key]['id']==ticket.id%} 人民:{{peopleno[key]['total_peoples']} {%endif%} {%else%} 人口:0 {%endif%} {%endfor%}

  • {%endfor%}
    在实体之间创建关联,然后在twig中可以访问每个组的人员

    use Doctrine\Common\Collections\ArrayCollection;
    class Group
    {
        /**
         * @var integer
         *
         * @ORM\Column(name="id", type="integer")
         * @ORM\Id
         * @ORM\GeneratedValue(strategy="AUTO")
         */
        protected $id;
    ...
        /**
         * @ORM\OneToMany(targetEntity="People", mappedBy="group")
         **/
        private $peoples;
        // ...
    
        public function __construct() {
            $this->peoples = new ArrayCollection();
        }
    
    
    }
    
    {% for group in allGroups %}
                <li>name: {{group.name}} </li>
                <li>date:{{ group.createdAt|date('d-m-Y H:i:s') }}</li>
                <li>Number of people: {{ group.peoples|length }}</li>
                <hr>
    {% endfor %}
    
    在twig中,您可以使用函数获取每个组的人数

    use Doctrine\Common\Collections\ArrayCollection;
    class Group
    {
        /**
         * @var integer
         *
         * @ORM\Column(name="id", type="integer")
         * @ORM\Id
         * @ORM\GeneratedValue(strategy="AUTO")
         */
        protected $id;
    ...
        /**
         * @ORM\OneToMany(targetEntity="People", mappedBy="group")
         **/
        private $peoples;
        // ...
    
        public function __construct() {
            $this->peoples = new ArrayCollection();
        }
    
    
    }
    
    {% for group in allGroups %}
                <li>name: {{group.name}} </li>
                <li>date:{{ group.createdAt|date('d-m-Y H:i:s') }}</li>
                <li>Number of people: {{ group.peoples|length }}</li>
                <hr>
    {% endfor %}
    
    在twig中,您可以循环查看结果,并使用
    total\u peoples
    index显示计数

    注意:这不会返回没有任何关联用户的组 表示计数为0的组将不会返回,因为它是内部组 加入,您需要的是正确地加入到组实体,不幸的是,它不是 可能在dql中有一个正确的联接


    要实现正确的连接并坚持条令关联,您必须实施

    没有其他方法不修改实体吗?请这样做,我无法真正修改实体。我添加了我在文章末尾得到的结构。我不确定如何在twig中循环显示每个组的编号,因为它是按从0开始的顺序索引的,而不是按组id索引的。我认为如果一个组没有人就可以了,那么我就说它有0人。@georgeirimicuc使用我的current查询我猜你在上次更新之前复制了这个数组,应该给你一个包含所有行的数组。不,是这个数组,我只是删除了g.name,g.createdAt,然后放上g.id。格式还是一样的。