0

私は Symfony2 と Doctrine にはまったく慣れていませんが、PHP でプログラミングを行いました。私は2つのテーブルを持っています:

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"

この特定のクエリでは、結果には 1 つの行しかありません (この著者には 1 つの引用しかありません)。ページネーションを簡単にするために、クエリは WhiteOctober pagerfanta を使用して実行されます。結果を小枝に渡し、引用符を表示しています

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

この場合、data.quote 属性が表示されます。

質問は次のとおりです。 結合されたテーブルからデータ属性を表示する方法はQuoteAuthor? すなわちauthFirstName, authLastName等。

Webで検索しましたが、答えが見つかりません。ところで、上記の Twig ステートメントを置き換えると、「タイプのオブジェクト (ArrayAccess を使用) にキー 'quote' が存在しません」というエラーが表示されますdata.quotedata[‘quote’]

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]
          ...
4

1 に答える 1

0

これを機能させるgetAuthor()には、クラス内のメソッドQuote( の値を返すauth_id) とクラスgetFirstName()内のメソッド( の値を返す) が必要です。QuoteAuthorauthorFirstName

その後、 を使用して著者名を取得できるはず{{ data.author.firstName }}です。

auth_idプロパティの名前を に変更しauthorて、 と の関係QuoteAuthor理解し​​やすくすることをお勧めします。

于 2013-03-13T14:18:41.153 に答える