gpt4 book ai didi

php - Doctrine 在 symfony 中找不到方法

转载 作者:搜寻专家 更新时间:2023-10-31 21:29:50 25 4
gpt4 key购买 nike

这个问题一直困扰着我。我试图在 symfony 中使用 DQL 加入几个表,但它一直抛出异常说:

“对象“AppBundle\Entity\Keyword”的方法“排名”在第 37 行的@App/default/index.html.twig 中不存在”

这是我的 DQL:

$query = $em->createQuery(
'SELECT e,k,r
FROM AppBundle:Keyword k
JOIN k.company c
LEFT JOIN k.entry e
LEFT JOIN e.rankings r
WHERE c.user = :id
ORDER BY k.name ASC'
)->setParameter('id',$user_id);


$keywords = $query->getResult();

我想我知道问题是什么 - 但我不知道如何解决它。我的关键字实体如下所示:

AppBundle\Entity\Keyword:
type: entity
table: null
id:
id:
type: integer
id: true
generator:
strategy: AUTO
fields:
name:
type: string
length: 255

manyToOne:
company:
targetEntity: AppBundle\Entity\Company

oneToMany:
entry:
targetEntity: AppBundle\Entity\Entry
mappedBy: keyword


lifecycleCallbacks: { }

请注意,排名实体和关键字实体之间没有直接连接关系 - 该关系存在于作为关键字实体和排名实体之间链接的条目实体中:

AppBundle\Entity\Entry:
type: entity
table: null
id:
id:
type: integer
id: true
generator:
strategy: AUTO
fields:
path:
type: string
length: 255

manyToOne:
keyword:
targetEntity: AppBundle\Entity\Keyword

oneToMany:
rankings:
targetEntity: AppBundle\Entity\Ranking
mappedBy: entry

lifecycleCallbacks: { }

这是排名实体:

AppBundle\Entity\Ranking:
type: entity
table: null
id:
id:
type: integer
id: true
generator:
strategy: AUTO
fields:
position:
type: integer
visits:
type: integer
nullable: TRUE
bounces:
type: integer
nullable: TRUE
date:
type: datetime


manyToOne:
entry:
targetEntity: AppBundle\Entity\Entry

lifecycleCallbacks: { }

我感谢各种帮助! :)

编辑

好的,如果我将上面编写的 DQL 传递给 twig 模板:如果它是多对一关系,我该如何检索排名?如果我这样做:

   {% for ranking in keyword.entry.rankings %}
<td>{{ ranking.id }}</td>
{% endfor %}

它给了我对象“Doctrine\ORM\PersistentCollection”的方法“排名”在第 37 行的@App/default/index.html.twig 中不存在

最佳答案

按照我将在此处向您展示的方式修改您的 Twig

{% for entry in keyword.entry %}
{% for ranking in entry.rankings %}
<td>{{ ranking.id }}</td>
{% endfor %}
{% endfor %}

因为entry不是单个实体而是实体的集合

您还写入了您的实体映射文件

AppBundle\Entity\Keyword:
[...]
oneToMany:
entry:
targetEntity: AppBundle\Entity\Entry
mappedBy: keyword

因此,即使您的查询只会从您的关系中提取一条记录,结果也将是一个集合(某种类型,在本例中为 PersistenCollection)

关于php - Doctrine 在 symfony 中找不到方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31165863/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com