不動産 (セール) から物件 (ティーザー) を削除しました。CLI を使用してデータベースとエンティティを更新しました。
$ php app/console doctrine:schema:update --complete --force
$ php app/console doctrine:generate:entities Our --no-backup
$ php app/console doctrine:cache:clear-metadata
$ php app/console doctrine:cache:clear-result
そして、キャッシュをクリアしました:
$ php app/console cache:clear --no-optional-warmers --no-warmup
今、クエリビルダーによって作成されたクエリがあります:
$qb = $this->createQueryBuilder('s');
$q = $qb
->select('s.id')
->leftJoin('s.bills','b')
->where('b.paid = true')
->getQuery()
->getResult();
これは、古いプロパティを含む select ステートメントを生成するため、エラーをスローします。
Column not found: 1054 Unknown column 's0_.teaser' in 'field list'
Doctrine がクエリを実行する方法を理解しようとしましたが、問題の原因を見つけることができませんでした。誰にも手がかりはありますか?
更新: querybuilder によって生成されたクエリから DQL を取得し、それを使用して新しいクエリを作成しました。同じエラー。次に、DQL の 1 つの単語を大文字から小文字に変更し ( LEFTはLeftになりました)、その単語は問題なく実行されました。
$q = $this->getEntityManager()
->createQuery('SELECT s,b FROM Our\BuyBundle\Entity\Sale s Left JOIN s.bills b WHERE s.id IN (:randomIds)')
->setParameter('randomIds', $allSaleIds);
そのため、DQLステートメントはどこかにキャッシュされているようで、DQLをハッシュとして使用して、対応するSQLステートメントを取得します。そのキャッシュされた情報をどこでどのようにクリアするのか、まだよくわかりません。特に、アプリ/キャッシュフォルダー内のすべてのコンテンツも削除したという事実を考えると.
UPDATE2: 解決策が見つかりました。コンソールではできないため、APC キャッシュを手動でクリアする必要がありました。したがって、ソリューションは次のようになります。
$ php app/console doctrine:cache:clear-query
それでもうまくいかない場合は、APC キャッシュをクリアしてください。