私のsymfonyプロジェクトでは、1対多の関係にある2つのエンティティがあります。だから、唯一の違いは、私がASCを使用する最初のポストのために、最後のために、->orderBy()
中であるSymfony Doctrineディセーブルキャッシュ
public function getFirstPost(Topic $topic)
{
$query = $this->createQueryBuilder('t')
->addSelect('p')
->join('t.posts', 'p')
->where('t.id = :topic_id')
->setParameter('topic_id' => $topic->getId())
->orderBy('p.id', 'ASC')
->setMaxResults(1)
->getQuery();
return $query->getOneOrNullResult();
}
public function getLastPost(Topic $topic)
{
$query = $this->createQueryBuilder('t')
->addSelect('p')
->join('t.posts', 'p')
->where('t.id = :topic_id')
->setParameter('topic_id' => $topic->getId())
->orderBy('p.id', 'DESC')
->setMaxResults(1)
->getQuery();
return $query->getOneOrNullResult();
}
:私は最初と最後の子を見つける必要があるので、私はこのようになりリポジトリ機能を使用 私はDESCを使用します。
私のコントローラからこれらの機能の1つを使用すると、期待した結果が返され、うまく動作します。しかし、私がコントローラから同時に両方を実行すると、同じ結果が返されますが、同じ結果は返されません。
私の推測では、Doctrineはこれらのクエリと結果をどうにかしてキャッシュするので、同じ結果を返す理由は$query->useResultCache(false)
ですが、何もしませんでした。
私の質問は、どうしてこれが起こっているのですか?どうすれば解決できますか?
あなたが1つのポストだけでなく、があることを確認しています渡されたトピックで? –
はい、私がテストしているトピックには、Id 17の最初の子とId 23の最後の子があり、合計で4人の子供が含まれています – Kable