2015-11-09 6 views
0

У меня есть отношение один-ко-многим между проектами и изображениями и много-к-одному между проектом и приличием. Я хотел бы, чтобы выбрать procts хо имеет image.cover = 1 и propriety.activated = 1, но код всегда дают мне все изображения для проектов2 Как присоединиться к двум объектам в моем проекте

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; 

ответ

0

На вашем OneToMany ассоциаций, вы должны использовать ArrayCollection, так как вы можете хранить несколько экземпляров вашего целевого объекта с этой целью. Вы также должны импортировать класс ArrayCollection и инициализировать эту коллекцию в своем конструкторе.

Так что в вашем классе Project вы можете добавить что-то вроде этого:

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 doctrine:generate:entities. Эта команда также создаст два дополнительных метода addImage и removeImage для управления вашей коллекцией.

Надеется, что это помогает

+0

проблемы, я не могу изучить этот метод removeElement, чтобы выбрать проект ха иметь крышку = 1 –