Я новичок в Symfony2 и разрабатываю свой первый проект, в котором я
- 1 юридическое лицо "ejuridique", у которого есть 1 одноточечное отношение с
- 1 объект "проект", у которого есть 1 одноточечное отношение с
- 1 сущность "фото".
Я хотел бы иметь 1 таблицу, показывающую для каждого "ejuridique" имя ejuridique и его первую фотографию его первого проекта.
Но на данный момент я получаю сообщение об ошибке «неопределенный индекс: chl\websitesBundle\photo», когда я вызываю из контроллера свою собственную функцию с двумя каскадными левыми соединениями.
ветка "liste.html.twig"
{% for ejuridique in ejuridiques %}
<div>
<div>{{ejuridique.nom}} </div>
<div>
{% for projet in ejuridique.projets %}
{% for photo in projet.photos %}
{{photo.name}}
{%endfor%}
{%endfor%}
</div>
<div>
{%endfor%}
контроллер
class websitesController extends Controller
{
public function listeAction($page)
{
$em = $this ->getDoctrine()
->getManager();
$ejuridiques = $em ->getRepository('chlwebsitesBundle:Ejuridique')
->findAll();
$projets = $em ->getRepository('chlwebsitesBundle:Ejuridique')
->myFindAll();
return $this->render('chlwebsitesBundle:websites:liste.html.twig', array(
'ejuridiques'=>$ejuridiques,'projets'=>$projets));
Репозиторий ejuridique
class ejuridiqueRepository extends EntityRepository
{
public function myFindAll()
{
$qb = $this->createQueryBuilder('a')
->leftjoin('a.projets', 'pr' )
->leftjoin('pr.photos', 'ph' )
->where('pr.projetPosition = :position_pr')
->ANDwhere('ph.position = :position_ph')
->setParameters(array('position_pr'=> "1",'position_ph'=> "1"))
->addSelect('pr')
->addSelect('ph');
return $qb->getQuery()
->getResult();
}
}
Мои 3 объекта
юридический
class ejuridique
{
/**
* @ORM\OneToMany(targetEntity="chl\websitesBundle\Entity\Projet", mappedBy="ejuridique")
* @ORM\JoinColumn(nullable=false)
*/
private $projets;
проект
class projet
{
/**
* @ORM\ManyToOne(targetEntity="chl\websitesBundle\Entity\ejuridique", inversedBy="projets")
*/
private $ejuridique;
/**
* @var integer
*
* @ORM\Column(name="projet_position", type="integer")
*/
private $projetPosition;
/**
* @ORM\OneToMany(targetEntity="chl\websitesBundle\Entity\Photo", mappedBy="projet")
* @ORM\JoinColumn(nullable=false)
*/
private $photos;
Фото
class photo
{
/**
* @var string
*
* @ORM\Column(name="name", type="string", length=255)
*/
private $name;
/**
* @ORM\ManyToOne(targetEntity="chl\websitesBundle\Entity\projet", inversedBy="photos")
*/
private $projet;
/**
* @var integer
*
* @ORM\Column(name="position", type="integer")
*/
private $position;
}
Итак, со всеми этими файлами я получаю на данный момент ошибку «ContectErrorException: Note: Undefined index: chl\websitesBundle\Entity\Photo», но
Когда я просто вызываю из контроллера простую команду «findall()» в моем репозитории ejuridique, я получаю все ejuridique со всеми их проектами и всеми изображениями. Следовательно, я думаю, что с моими сущностями и моей БД все в порядке.
То же самое, когда я вызываю свою функцию «myFindAll» только с одним левым соединением между «ejuridique» и «projet» с параметрами. Все работает правильно.
Только когда у меня есть 2 каскадных левых соединения в моей собственной функции "myFindAll", я получаю эту ошибку
Я надеюсь, что мой вопрос ясен и что я дал всю необходимую информацию.
Спасибо заранее за вашу помощь.