Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [SF][Symfony2]Dołączanie encji do zapytania
Sagnitor
post
Post #1





Grupa: Zarejestrowani
Postów: 34
Pomógł: 3
Dołączył: 29.05.2011

Ostrzeżenie: (0%)
-----


Witam forumowiczów.
Problem mój, dość trywialny, okazał się być mi chwilowo nierozwiązywalny. Liczę na waszą pomoc. Do rzeczy: posiadam dwie encje 'Details' oraz 'Field' w relacji many to one. W widoku chcę wyświetlać po kolei encję 'Details' odwołując się do pola 'name' z 'Field'. Aby ilość zapytań nie rosła wraz z ilością rekordów postanowiłem zrobić JOIN'.a W tym momencie przy wyświetlaniu szablonu wyrzuca mi błąd, że odwołuję się do nieistniejącej metody encji Field (pomimo że pobieram Details w tablicy układają sie one obok siebie). Po tym niejasnym opisie przedstawię kod:

Encja 'Details':
  1. /**
  2.  * Details
  3.  *
  4.  * @ORM\Table(name="details")
  5.  * @ORM\Entity(repositoryClass="Graduates\CommunityBundle\Entity\DetailsRepository")
  6.  */
  7. class Details
  8. {
  9. /**
  10.   * @var integer
  11.   *
  12.   * @ORM\Column(name="id", type="integer", nullable=false)
  13.   * @ORM\Id
  14.   * @ORM\GeneratedValue(strategy="IDENTITY")
  15.   */
  16. private $id;
  17.  
  18. /**
  19.   * @var string
  20.   *
  21.   * @ORM\Column(name="content", type="string", length=255, nullable=true)
  22.   */
  23. private $content;
  24.  
  25. /**
  26.   * @var boolean
  27.   *
  28.   * @ORM\Column(name="visible", type="boolean", nullable=true)
  29.   */
  30. private $visible;
  31.  
  32. /**
  33.   * @var \Person
  34.   *
  35.   * @ORM\ManyToOne(targetEntity="Person")
  36.   * @ORM\JoinColumns({
  37.   * @ORM\JoinColumn(name="person_id", referencedColumnName="id")
  38.   * })
  39.   */
  40. private $person;
  41.  
  42. /**
  43.   * @var \Field
  44.   *
  45.   * @ORM\ManyToOne(targetEntity="Field")
  46.   * @ORM\JoinColumns({
  47.   * @ORM\JoinColumn(name="field_id", referencedColumnName="id")
  48.   * })
  49.   */
  50. private $field;


Encja 'Field':
  1. /**
  2.  * Field
  3.  *
  4.  * @ORM\Table(name="field")
  5.  * @ORM\Entity
  6.  */
  7. class Field
  8. {
  9. /**
  10.   * @var integer
  11.   *
  12.   * @ORM\Column(name="id", type="integer", nullable=false)
  13.   * @ORM\Id
  14.   * @ORM\GeneratedValue(strategy="IDENTITY")
  15.   */
  16. private $id;
  17.  
  18. /**
  19.   * @var string
  20.   *
  21.   * @ORM\Column(name="name", type="string", length=45, nullable=true)
  22.   */
  23. private $name;
  24.  
  25. /**
  26.   * @var string
  27.   *
  28.   * @ORM\Column(name="type", type="string", length=45, nullable=true)
  29.   */
  30. private $type;
  31.  
  32. /**
  33.   * @var string
  34.   *
  35.   * @ORM\Column(name="form_name", type="string", length=45, nullable=true)
  36.   */
  37. private $formName;


Zapytanie do bazy:
  1. <?php
  2. namespace Graduates\CommunityBundle\Entity;
  3.  
  4. use Doctrine\ORM\EntityRepository;
  5.  
  6. class DetailsRepository extends EntityRepository
  7. {
  8. public function findByPersonJoinedToField($person)
  9. {
  10. $query = $this->getEntityManager()
  11. ->createQueryBuilder()
  12. ->select(array('d', 'f'))
  13. ->from('GraduatesCommunityBundle:Details', 'd')
  14. ->leftJoin('GraduatesCommunityBundle:Field', 'f', 'WITH', 'd.field=f.id')
  15. ->where('d.person = :person')
  16. ->andWhere('d.visible=1')
  17. ->setParameter('person', $person)
  18. ->getQuery();
  19.  
  20. try {
  21. return $query->getResult();
  22. } catch (\Doctrine\ORM\NoResultException $e) {
  23. return null;
  24. }
  25. }
  26. }


oraz wyświetlanie w szablonie:
  1. {% for detail in details %}
  2. <h4>{{ detail.field.name }}:</h4>
  3. {{ detail.content }}
  4. {% endfor %}


Treść błędu: Method "field" for object "Proxies\__CG__\Graduates\CommunityBundle\Entity\Field" does not exist in GraduatesCommunityBundle:Person:profile.html.twig.

Z góry dziękuję za zainteresowanie się tematem.

Ten post edytował Sagnitor 19.02.2013, 13:04:22
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 08:26