私は何時間もネットを検索していますが、次の(縮小された)問題の解決策が見つかりません。
私の Symfony2 プロジェクトには 2 つのエンティティがあります。
/**
* @ORM\Entity(repositoryClass="myBundle\Entity\AppuserRepository")
* @ORM\Table(name="appuser")
*/
class Appuser implements UserInterface {
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id = "";
/**
* @ORM\OneToMany(targetEntity="Watched", mappedBy="appuserReference")
*/
protected $watches;
// ________________________________________________________________________
public function __construct() {
$this->watches = new \Doctrine\Common\Collections\ArrayCollection();
}
}
/**
* @ORM\Entity
* @ORM\Table(name="watched")
*/
class Watched extends WatchedAbstract {
/**
* @ORM\ManyToOne(targetEntity="Appuser", inversedBy="watches")
* @ORM\JoinColumn(name="appuserReference_id", referencedColumnName="id")
*/
protected $appuserReference;
}
queryBuilder または createQuery を使用して、いくつかの Watched-Entities (つまり、ID が 1、3、および 12 のもの ;-)) によって参照されるすべてのユーザーを取得するにはどうすればよいですか?
これは、MySql で正しく実行され、DQL に「変換」できない SQL です。
SELECT * FROM appuser WHERE id IN (
SELECT w.appuserReference_id
FROM watched w WHERE w.id IN (1, 3, 12));
Appuser-Entity には「watches」に関連する列がないため、他の方向に参加することができました。内部選択を行うために「appuserReference_id」または「appuserReference」を使用できません。
あなたが私を理解してくれることを願っています、thx!