在twig中显示已加入查询的数据属性

时间:2013-01-16 22:05:31

标签: attributes doctrine twig jointable

我是Symfony2和Doctrine的新手,但我用PHP做了一些编程。 我有两张桌子:

Quotes:
id
quote
subject
auth_id

QuoteAuthor:
id
authorFirstName
authorLastName
authorLastNameFirstLetter
slug

我正在运行查询:

"SELECT u, a FROM BetterLifeQuotesBundle:Quote u u.auth_id a WHERE a.id = 4"

在此特定查询中,结果只有一行(此作者只有一个引号)。 使用WhiteOctober pagerfanta进行查询以便于分页。 我将结果传递给树枝并显示引号

{% for data in pagerfanta.currentPageResults %}
    <li>{{ data.quote }}</li>
{% endfor %}

在这种情况下,将显示data.quote属性。

问题是: 如何显示已加入的QuoteAuthor表中的数据属性? 即authFirstName, authLastName等。

我在网上搜索过,但找不到任何答案。 顺便说一句 - 如果在上面的Twig语句中,我将data.quote替换为data[‘quote’],它给出了错误,即对象(带有ArrayAccess)类型中的“键'引号'不存在”。

我需要的所有信息都在data中,您可以在下面的转储信息中看到:

object(BetterLife\QuotesBundle\Entity\Quote)[760]
  private 'id' => int 500
  private 'quote' => string 'An archaeologist is the best husband a woman can have; the   
                       older she gets, the more interested he is in her.' (length=108)
  private 'subject' => string 'Men and Women' (length=13)
  private 'auth_id' => 
    object(BetterLife\QuotesBundle\Entity\QuoteAuthor)[758]
      private 'id' => int 4
      private 'authorFirstName' => string 'Agatha' (length=6)
      private 'authorLastName' => string 'Christie' (length=8)
      private 'authorLastNameFirstLetter' => string 'C' (length=1)
      private 'slug' => string '' (length=0)
      private 'quotes' => 
        object(Doctrine\ORM\PersistentCollection)[753]
          private 'snapshot' => 
            array (size=0)
              ...
          private 'owner' => 
            &object(BetterLife\QuotesBundle\Entity\QuoteAuthor)[758]
          private 'association' => 
            array (size=15)
              ...
          private 'em' => 
            object(Doctrine\ORM\EntityManager)[345]
              ...
          private 'backRefFieldName' => string 'quote_author' (length=12)
          private 'typeClass' => 
            object(Doctrine\ORM\Mapping\ClassMetadata)[816]
              ...
          private 'isDirty' => boolean false
          private 'initialized' => boolean false
          private 'coll' => 
            object(Doctrine\Common\Collections\ArrayCollection)[769]
          ...

1 个答案:

答案 0 :(得分:0)

要完成这项工作,您需要getAuthor()类中的Quote方法(返回auth_id的值)和getFirstName()方法QuoteAuthor 1}} class(返回authorFirstName的值)。

然后,您应该能够使用{{ data.author.firstName }}获取作者的名字。

我建议将auth_id属性重命名为author,以便QuoteAuthor之间的关系更容易理解。