Я пытаюсь создать ассоциацию «один ко многим / многие к одному» в доктрине Symfony3.4!я работаю над двумя объектами [Single и Many], «один» объект содержит объект «Many», а объект «Many» содержит массив массивов других объектов «singles».Я пытался создать новый экземпляр сингла и новый экземпляр многих, и я назначил множество сущностей на сингл, прежде чем я добавил много синглов во многие сущности, но проблема в том, когда я пытаюсь запросить все синглы, которые я получилсинглов не былоЭто мой Множественный объект``
namespace AjaxBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* Many
*
* @ORM\Table(name="many")
* @ORM\Entity(repositoryClass="AjaxBundle\Repository\ManyRepository")
*/
class Many
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\OneToMany( targetEntity="AjaxBundle\Entity\Single",
mappedBy="single",cascade={"persist"})
* @var \Doctrine\Common\Collections\Collection
*/
public $multi;
/**
* Get id
*
* @return int
*/
public function getId()
{
return $this->id;
}
/**
* Constructor
*/
public function __construct()
{
$this->multi = new \Doctrine\Common\Collections\ArrayCollection();
}
/**
* Add multi
*
* @param \AjaxBundle\Entity\Single $multi
*
* @return Many
*/
public function addMulti(\AjaxBundle\Entity\Single $multi)
{
$this->multi[] = $multi;
return $this;
}
/**
* Remove multi
*
* @param \AjaxBundle\Entity\Single $multi
*/
public function removeMulti(\AjaxBundle\Entity\Single $multi)
{
$this->multi->removeElement($multi);
}
/**
* Get multi
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getMulti()
{
return $this->multi;
}
}
А это мой Единый объект
namespace AjaxBundle\Repository;
/**
* SingleRepository
*
* This class was generated by the Doctrine ORM. Add your own custom
* repository methods below.
*/
use AjaxBundle\Entity\Single;
use Doctrine\ORM\EntityNotFoundException;
use Doctrine\ORM\NonUniqueResultException;
use Doctrine\ORM\NoResultException;
use Doctrine\ORM\Query;
class SingleRepository extends \Doctrine\ORM\EntityRepository
{
public function fetch($id)
{
$manager=$this->getEntityManager();
$query=$manager->createQuery("SELECT u from AjaxBundle:Single u WHERE
u.id='$id'");
try{
return $query->getSingleResult(Query::HYDRATE_SIMPLEOBJECT);}
catch (NoResultException $xx)
{
die("impossible");
}
catch (NonUniqueResultException $zz)
{
die("impossible");
}
}
}
Это контроллер (Ради тестирования)
public function showFriendAction()
{
$manager=$this->getDoctrine()->getManager();
$object2=$manager->getRepository(Single::class)->fetch(5);
$object3=$manager->getRepository(Single::class)->fetch(6);
$many=new Many();
$many->addMulti($object2);
$many->addMulti($object3);
$single=new Single();
$single->setNom("Somename");
$single->single=$many;
$manager->persist($many);
$manager->persist($single);
$manager->flush();
return new Response("");
}
Иэто выборка, которую я создал, чтобы получить одиночные объекты (чтобы добавить их в мульти-массив)
public function fetch($id)
{
$manager=$this->getEntityManager();
$query=$manager->createQuery("SELECT u from AjaxBundle:Single u
WHERE
u.id='$id'");
try{
return $query->getSingleResult(Query::HYDRATE_SIMPLEOBJECT);}
catch (NoResultException $xx)
{
die("impossible");
}
catch (NonUniqueResultException $zz)
{
die("impossible");
}
}
Это мой файл ветки для проверки результата
<html>
<head></head>
<body>
<center>
{% for x in data %}
<ul>{{ x.nom }}</ul>
{% if x.id==9%}
{% for m in x.single %}
<h2>{{m.multi.nom}}</h2>
{% endfor %}
{% endif %}
{% endfor %}
</center>
</body>
</html>
Любойможно мне показать, как решить проблему?Большое спасибо