Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.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
Sql 使用细枝从条令中的联接查询访问值_Sql_Symfony_Doctrine Orm_Twig_Doctrine Query - Fatal编程技术网

Sql 使用细枝从条令中的联接查询访问值

Sql 使用细枝从条令中的联接查询访问值,sql,symfony,doctrine-orm,twig,doctrine-query,Sql,Symfony,Doctrine Orm,Twig,Doctrine Query,我在从联接查询访问值时遇到问题。我在一个存储库中构建了一个查询,用于联接/左联接表 为了让下面的代码更容易理解:我有一个约会。此约会是事件的一部分,事件是事件组的一部分。活动组有参与者。在现实生活中,这意味着事件的每个参与者也是约会的参与者。例如,有一个培训中心。该中心有不同的培训课程(跑步、举重……)。每门课程针对不同的小组有不同的活动(如A组总是周一和周五,B组总是周二和周四)。所以你可以参加A组的跑步。约会是每个组的正确日期和时间 现在我想要一个人的所有约会。因此,我的查询如下所示: $q

我在从联接查询访问值时遇到问题。我在一个存储库中构建了一个查询,用于联接/左联接表

为了让下面的代码更容易理解:我有一个约会。此约会是事件的一部分,事件是事件组的一部分。活动组有参与者。在现实生活中,这意味着事件的每个参与者也是约会的参与者。例如,有一个培训中心。该中心有不同的培训课程(跑步、举重……)。每门课程针对不同的小组有不同的活动(如A组总是周一和周五,B组总是周二和周四)。所以你可以参加A组的跑步。约会是每个组的正确日期和时间

现在我想要一个人的所有约会。因此,我的查询如下所示:

$qb = $this->createQueryBuilder('a')
    ->leftJoin('a.event', 'event')
    ->leftJoin('event.eventgroup', 'eventgroup')
    ->innerJoin('event.participants', 'p', 'WITH', 'p.id = :id')
    ->setParameter('id', $user->getId())
;

return $qb->getQuery()->getResult();
如果我查看doctrine,在mysql中运行处理后的查询时,我也会得到正确的结果。但是如果我想从我的小树枝文件中的表中访问一个值,它就不起作用了

{% for appointment in appointments|default(false) %}
    <li class="list-group-item">
        <a href="livemode.html">
            <span class="col-md-4">{{ appointment.getEventGroup() }}&emsp;<span class="tag tag-default">{{ appointment.getName() }}</span></span>
             <span class="col-md-4">{{ appointment.getTopicBlock().getName() }}</span>
            <span>{{ appointment.getDate()|date("d.m.Y") }}&emsp;09:30 Uhr</span>
        </a>
    </li>
{% endfor %}
{约会中约会的百分比|默认值(false)%}
  • {%endfor%}

    实体和方法是正确的。其他查询工作正常。但是在这个例子中,我得到了一个Symfony错误,这个方法是不正确的。如果我不使用值和循环,我会得到4倍的html元素。这也是正确的结果数量。内部连接可能有问题吗?因为有了它,我不仅把id链接到db中的其他实体,而且多次将它们连接到一个事件?我可以用另一种方式访问这些值吗

    如果实体已正确映射,您应该能够通过直接访问关系和属性来访问它们:

    {% for appointment in appointments|default(false) %}
        <li class="list-group-item">
            <a href="livemode.html">
                <span class="col-md-4">{{ appointment.eventGroup }} <span class="tag tag-default">{{ appointment.name }}</span></span>
                 <span class="col-md-4">{{ appointment.topicBlock.name }}</span>
                <span>{{ appointment.date|date("d.m.Y") }} 09:30 Uhr</span>
            </a>
        </li>
    {% endfor %}
    
    {约会中约会的百分比|默认值(false)%}
    
  • {%endfor%}
    这假设
    Appointment
    实体映射了
    EventGroup
    关系,并且还有一个getter方法


    如果不起作用,您可以为您的实体添加代码,我编辑我的答案。

    谢谢。我真的不知道为什么我自己没有这么做。与以前的做法没有任何改变。可能是我有点累了。我坐在这前面一个多小时;D但是我必须写
    appointment.event.eventgroup.getName()
    ,因为我当然不能直接从
    appointment
    访问
    eventgroup
    ,因为
    event
    在它们之间,然后通过调用
    getName()
    来获取
    name
    属性,现在添加另一个答案是否太晚了?Isouza的可能有用,但我知道你做错了什么。。。