我现在在网上搜索了几个小时,但找不到以下(减少的)问题的解决方案:
我的 Symfony2 项目中有两个实体:
/**
* @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 oder createQuery 来获取所有用户,这些用户由几个 Watched-Entities 引用(即 ID 为 1、3 和 12 的用户;-))?
这是在 MySql 中运行的 SQL,我无法将其“翻译”为 DQL:
SELECT * FROM appuser WHERE id IN (
SELECT w.appuserReference_id
FROM watched w WHERE w.id IN (1, 3, 12));
我只是设法加入另一个方向,因为 Appuser-Entity 没有“手表”的相关列。我不能使用“appuserReference_id”或“appuserReference”来进行内部选择。
希望你能理解我,谢谢!