Symfony2-スラッグで投稿を見つけるためのDoctrineクエリにエラーがあります

旋風に乗る

Symfony2の初心者で、スラッグで投稿を見つけるためのカスタムDoctrine2クエリで何が間違っているのか質問があります。

以下を使用していますが、ソート順をDESCに変更したいと思います。

$post = $this->getDoctrine()->getRepository('AcmeDemoBundle:Post')
        ->findOneBy(array(
           'slug' => $slug
        ));

これが私のカスタムクエリです:

public function findPostsBySlug($slug)
{
    return $this->createQueryBuilder('post')
        ->select('post')
        ->where('post.slug = :slug')
        ->setParameter('slug', $slug)
        ->orderBy('post.createdAt', 'DESC')
        ->getQuery()
        ->getResult();
}

次のエラーが発生しています:

Key "title" for array with keys "0" does not exist in AcmeDemoBundle:Post:show.html.twig at line 7

何が間違っているのですか、またはカスタムクエリに何が欠けていますか?

小枝

{% block body %}
{{ parent() }}
<div class="container">
    <h2>{{ post.title }}</h2>

    <p>
        <small>Post by <em>{{ post.author }}</em> on <em>{{ post.createdAt|date }}</em></small>
    </p>
    <p>{{ post.body }}</p>

    {% for reply in post.replies %}
        <hr>
        <p>
            <small>Reply from <em>{{ reply.author }}</em> on {{ reply.createdAt|date }}</small>
        </p>
        <p>{{ reply.body }}</p>

    {% endfor %}
    <br>
{% if is_granted('IS_AUTHENTICATED_REMEMBERED') %}
    <h4>Reply</h4>

    {{ form(form, { action: path('acme_demo_post_createreply', { slug: post.slug }) }) }}
{% endif %}
</div>

{% endblock %}

投稿への返信用にDESCを並べ替えようとしています:

投稿への返信をDESC順に並べ替えようとしています。返信もDESCの順序で返されることを期待して、投稿をDESCの順序で並べ替えようとしましたが、機能せず、ASCの順序で返されるだけです。

投稿への返信をDESC順に並べ替えるにはどうすればよいですか?

コントローラ:

/**
 * Show a post
 *
 * @param string $slug
 *
 * @throws NotFoundHttpException
 * @return array
 *
 * @Route("/{slug}", name="acme_demo_post_show")
 * @Template("AcmeDemoBundle:Post:show.html.twig")
 */
public function showAction($slug)
{
    $post = $this->getDoctrine()->getRepository('AcmeDemoBundle:Post')
        ->findPostsBySlug($slug);

    // Form for replies
    $form = $this->createForm(new ReplyType());

    return array(
      'post' => $post,
      'form' => $form->createView()
    );
}

私が使用しているスラッグによる投稿のクエリ:

public function findPostsBySlug($slug)
{
    return $this->createQueryBuilder('post')
        ->select('post')
        ->where('post.slug = :slug')
        ->setParameter('slug', $slug)
        ->orderBy('post.createdAt', 'DESC')
        ->getQuery()
        ->getSingleResult();
}

返信は多対多の投稿にマッピングされます。

/**
 * @return Array Collection
 *
 * @ORM\ManyToMany(targetEntity="Reply", inversedBy="post")
 * @JoinTable(name="posts_replies",
 *      joinColumns={@JoinColumn(name="post_id", referencedColumnName="id", nullable=true)},
 *      inverseJoinColumns={@JoinColumn(name="reply_id", referencedColumnName="id")}
 *      )
 */
protected $replies;

投稿への返信を表示する小枝:

{% for reply in post.replies %}
        <hr>
        <p>
            <small>Reply from <em>{{ reply.author }}</em> on {{ reply.createdAt|date }}</small>
        </p>
        <p>{{ reply.body }}</p>

{% endfor %}
AL

getResult()Doctrine2関数は、配列に似たオブジェクトのコレクションを返します。そのため、Twigはそれを表示できません。Twigループを使用して、このオブジェクトのコレクションを反復処理できますが、それは役に立ちません。

コードは、のgetSingleResult()代わりにを使用して機能するはずですgetResult()


コメントの注文については、ドキュメントSOに関するこの回答に従って@OrderByパラメータを追加できます。

/**
 * @return Array Collection
 *
 * @ORM\ManyToMany(targetEntity="Reply", inversedBy="post")
 * @ORM\OrderBy({"createdAt" = "DESC"})
 * @JoinTable(name="posts_replies",
 *      joinColumns={@JoinColumn(name="post_id", referencedColumnName="id", nullable=true)},
 *      inverseJoinColumns={@JoinColumn(name="reply_id", referencedColumnName="id")}
 *      )
 */
protected $replies;

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Symfony2とDoctrine-エラー:無効なPathExpression。StateFieldPathExpressionである必要があります

分類Dev

Ajaxに戻る-エラー-Symfony2

分類Dev

Symfony2 / Doctrineがクエリに参加しました

分類Dev

Symfony2 access user and doctrine in a service

分類Dev

Doctrine Cache Symfony2 deleteByPrefix

分類Dev

Symfony2 - Testing Doctrine Listener

分類Dev

Symfony2: Doctrine MySql Math Functions

分類Dev

Symfony2サービス

分類Dev

Symfony2でのOrderBy

分類Dev

Symfony2での設定

分類Dev

Symfony2での設定

分類Dev

Symfony2 FOSRestBundleテスト

分類Dev

Symfony2ロガー

分類Dev

formbuillderのsymfony2認証

分類Dev

Symfony2の継承

分類Dev

symfony2のOneLogin / phpsaml

分類Dev

Symfony2エラーログ

分類Dev

クエリを回避するためのSymfony2 / Doctrine2キャッシュのもの

分類Dev

SymfonyはWindowsとLinuxのパスのミッシュマッシュを使用して小枝ファイルを検索しようとするため、Windows上のVagrantを介したSymfony2にはエラーがあります

分類Dev

オブジェクトは、2つの行を選択するために、linqクエリでIConvertibleエラーを実装する必要があります

分類Dev

Symfony2でのクラス継承

分類Dev

DoctrineにSymfony2でクエリをログに記録させる方法

分類Dev

symfony2エラー:sessionHandler :: read()

分類Dev

Symfony2のURLエイリアス

分類Dev

symfony2に投稿できません

分類Dev

クラスが同じディレクトリにあるのに、2つのインターフェイスクラスで「エラー:シンボルが見つかりません」というメッセージが表示され続ける

分類Dev

Symfony2 404エラー:オブジェクトが見つかりません(ParamConverterエラー)

分類Dev

symfony2のすべてのクラスはサービスである必要がありますか?

分類Dev

列の合計-Doctrine2 / Symfony2

Related 関連記事

  1. 1

    Symfony2とDoctrine-エラー:無効なPathExpression。StateFieldPathExpressionである必要があります

  2. 2

    Ajaxに戻る-エラー-Symfony2

  3. 3

    Symfony2 / Doctrineがクエリに参加しました

  4. 4

    Symfony2 access user and doctrine in a service

  5. 5

    Doctrine Cache Symfony2 deleteByPrefix

  6. 6

    Symfony2 - Testing Doctrine Listener

  7. 7

    Symfony2: Doctrine MySql Math Functions

  8. 8

    Symfony2サービス

  9. 9

    Symfony2でのOrderBy

  10. 10

    Symfony2での設定

  11. 11

    Symfony2での設定

  12. 12

    Symfony2 FOSRestBundleテスト

  13. 13

    Symfony2ロガー

  14. 14

    formbuillderのsymfony2認証

  15. 15

    Symfony2の継承

  16. 16

    symfony2のOneLogin / phpsaml

  17. 17

    Symfony2エラーログ

  18. 18

    クエリを回避するためのSymfony2 / Doctrine2キャッシュのもの

  19. 19

    SymfonyはWindowsとLinuxのパスのミッシュマッシュを使用して小枝ファイルを検索しようとするため、Windows上のVagrantを介したSymfony2にはエラーがあります

  20. 20

    オブジェクトは、2つの行を選択するために、linqクエリでIConvertibleエラーを実装する必要があります

  21. 21

    Symfony2でのクラス継承

  22. 22

    DoctrineにSymfony2でクエリをログに記録させる方法

  23. 23

    symfony2エラー:sessionHandler :: read()

  24. 24

    Symfony2のURLエイリアス

  25. 25

    symfony2に投稿できません

  26. 26

    クラスが同じディレクトリにあるのに、2つのインターフェイスクラスで「エラー:シンボルが見つかりません」というメッセージが表示され続ける

  27. 27

    Symfony2 404エラー:オブジェクトが見つかりません(ParamConverterエラー)

  28. 28

    symfony2のすべてのクラスはサービスである必要がありますか?

  29. 29

    列の合計-Doctrine2 / Symfony2

ホットタグ

アーカイブ