У меня эта проблема, которая меня раздражает. Я пытаюсь присоединиться к нескольким таблицам с DQL в symfony, но он продолжает бросать исключение:Doctrine не может найти метод в symfony
«Ранг метода» для объекта «AppBundle \ Entity \ Keyword» не существует в @ App/default /index.html.twig в строке 37"
Это мой 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: { }
Я ценю все виды помощи! :)
EDIT
Итак, если я прохожу DQL написанного выше шаблон веточки: Как получить рейтинг, если это ManyToOne отношение? Если я так:
{% for ranking in keyword.entry.rankings %}
<td>{{ ranking.id }}</td>
{% endfor %}
это дает мне метод «рейтинга» для объекта «Доктрины \ ORM \ PersistentCollection» не существует в @ App/по умолчанию/index.html.twig в строке 37
hi Rvanlaak, спасибо за быстрый ответ! Удивительно, это кажется простым, но я пишу это в строке в контроллере или в шаблоне? –
Для шаблона Twig вы можете передать 'ключевое слово' в шаблон, а затем вы можете сделать следующее: ' {{keyword.entry.ranking}} ' Здесь я предполагаю, что отношения являются' OneToOne'. – Rvanlaak
Привет, см. Edit :) –