私はこのエラーを検索しようとしましたが、何も見つからなかったという事実は、私が何かばかげたことをしていると信じるように導きます. 以下に関連するコードを含めますが、基本的には複数のテーブル継承 (またはClass Table Inheritance ) を使用し、Doctrine ORM findBy() メソッドを使用して識別子列に基づいてクエリを実行しようとしています。その結果、次の ORMException が発生します。スローされる:「認識されないフィールド: タイプ」。
例外をトリガーするコードは次のとおりです。
// $this->em is an instance of \Doctrine\ORM\EntityManager
$repository = $this->em->getRepository('JoeCommentBundle:Thread');
return $repository->findOneBy(array(
'type' => $this->type,
'related_id' => $id
));
「ベース」抽象エンティティに関連するコードは次のとおりです。
<?php
namespace Joe\Bundle\CommentBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Gedmo\Mapping\Annotation as Gedmo;
use Doctrine\Common\Collections\ArrayCollection;
/**
* @ORM\Entity
* @ORM\Table(name="comment_threads")
* @ORM\InheritanceType("JOINED")
* @ORM\DiscriminatorColumn(name="type", type="string")
* @ORM\DiscriminatorMap( {"story" = "Joe\Bundle\StoryBundle\Entity\StoryThread"} )
*/
abstract class Thread
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\Column(name="related_id", type="integer")
*/
protected $relatedId;
/** MORE FIELDS BELOW.... **/
最後に、具体的なスレッド エンティティのコードを次に示します。
<?php
namespace Joe\Bundle\StoryBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Joe\Bundle\CommentBundle\Entity\Thread as AbstractThread;
/**
* @ORM\Entity
* @ORM\Table(name="story_comment_threads")
*/
class StoryThread extends AbstractThread
{
/**
* @ORM\OneToOne(targetEntity="Story")
* @ORM\JoinColumn(name="story_id", referencedColumnName="id")
*/
protected $story;
}
スキーマを再確認しましたが、type
列は確実に存在するため、何が原因なのかわかりません。何か案は?ありがとう。