Join 2如何在我的项目中连接两个实体

Join 2如何在我的项目中连接两个实体,join,doctrine,Join,Doctrine,我在项目和形象之间有一对多的关系,在项目和礼仪之间有一对多的关系。我想选择具有image.cover=1和proprity.activated=1的程序,但代码总是为我提供项目的所有图像 class ProjectImage { /** * @var integer * * @ORM\Column(name="id", type="integer") * @ORM\Id * @ORM\GeneratedValue(strategy="AU

我在项目和形象之间有一对多的关系,在项目和礼仪之间有一对多的关系。我想选择具有image.cover=1和proprity.activated=1的程序,但代码总是为我提供项目的所有图像

class ProjectImage
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     *
     * @ORM\ManyToOne(targetEntity="BI\AdminBundle\Entity\Project", inversedBy="images")
     * @ORM\JoinColumn(nullable=false, name="id_project", referencedColumnName="id")
     */
    private $idProject;



******************
class Project
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     *
     * @ORM\ManyToOne(targetEntity="BI\AdminBundle\Entity\Promoteur", inversedBy="projects")
     * @ORM\JoinColumn(nullable=false, name="id_promoteur", referencedColumnName="id")
     */
    private $idPromoteur;

    /**
     *
     * @ORM\ManyToOne(targetEntity="BI\AdminBundle\Entity\Governorate")
     * @ORM\JoinColumn(nullable=false, name="id_governorate")
     */
    private $idGovernorate;

    /**
     *
     * @ORM\ManyToOne(targetEntity="BI\AdminBundle\Entity\Delegation")
     * @ORM\JoinColumn(nullable=true, name="id_delegation")
     */
    private $idDelegation;

    /**
     * @ORM\ManyToOne(targetEntity="BI\AdminBundle\Entity\Locality")
     * @ORM\JoinColumn(nullable=true, name="id_locality")
     */
    private $idLocality;

    /**
     * @ORM\OneToMany(targetEntity="BI\AdminBundle\Entity\ProjectImage", mappedBy="idProject",cascade={"persist", "remove", "merge"})
     */
    private $images;
**********************************
class Promoteur
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @ORM\OneToMany(targetEntity = "BI\AdminBundle\Entity\Project", mappedBy = "idPromoteur")
     */
    private $projects;

在OneToMany关联上,您应该使用ArrayCollection,因为您可以在此端存储目标实体的多个实例。您还应该导入ArrayCollection类并在构造函数中实例化此集合

因此,在项目类中,您可能需要添加如下内容:

use Doctrine\Common\Collections\ArrayCollection;

/**
 * @var ArrayCollection
 * @ORM\OneToMany(targetEntity="BI\AdminBundle\Entity\ProjectImage", 
   mappedBy="idProject",cascade={"persist", "remove", "merge"})
 */
private $images;

public function __construct() {
    $this->images = new ArrayCollection();
}
然后可以使用
app/console原则:generate:entities
生成getter和setter。此命令还将创建另外两种方法
addImage
removeImage
,以管理您的收藏


希望这将有助于解决问题,我无法探索此方法removeElement来选择cover=1的项目