Как получить пайсы от отношений

Я FabricanteDistribuidor.php сущность с этим кодом:

class FabricanteDistribuidor
{
/**
* @ORM\ManyToMany(targetEntity="AppBundle\Entity\Pais", mappedBy="fabricanteDistribuidor", cascade={"persist"})
*/
private $paises;/**
* Set paises
*
* @param  \AppBundle\Entity\Pais $pais
* @return FabricanteDistribuidor
*/
public function setPaises(\Sencamer\AppBundle\Entity\Pais $pais)
{
$this->paises[] = $pais;
return $this;
}

/**
* Get paises
*
* @return Doctrine\Common\Collections\Collection
*/
public function getPaises()
{
return $this->paises;
}

}

И связанные Pais.php код объекта:

class Pais
{
use IdentifierAutogeneratedEntityTrait;
use NamedEntityTrait;
use ActiveEntityTrait;

/**
* @ORM\ManyToMany(targetEntity="Sencamer\AppBundle\Entity\FabricanteDistribuidor", inversedBy="paises", cascade={"persist"})
* @ORM\JoinTable(name="negocio.fabricante_distribuidor_pais", schema="negocio",
*      joinColumns={@ORM\JoinColumn(name="fabricante_distribuidor", referencedColumnName="id")},
*      inverseJoinColumns={@ORM\JoinColumn(name="pais_id", referencedColumnName="id")}
* )
*/
protected $fabricanteDistribuidor;

/**
* Add fabricanteDistribuidor
*
* @param AppBundle\Entity\FabricanteDistribuidor $fabricanteDistribuidor
*/
public function addfabricanteDistribuidor(\AppBundle\Entity\FabricanteDistribuidor $fabricanteDistribuidor)
{
$this->fabricanteDistribuidor[] = $fabricanteDistribuidor;
}

/**
* Get fabricanteDistribuidor
*
* @return Doctrine\Common\Collections\Collection
*/
public function getfabricanteDistribuidor()
{
return $this->fabricanteDistribuidor;
}

}

Я пытаюсь получить сейчас связанные paises от FabricanteDistribuidorкак следует, и я делаю что-то не так, так как я не могу получить их имена, так что не так в моем коде?

public function obtenerDetallesFabricanteAction(Request $request)
{
$em = $this->getDoctrine()->getManager();
$entity = $em->getRepository('AppBundle:FabricanteDistribuidor')->find($request->query->get('id'));

if ($request->isXmlHttpRequest()) {
$response['entities'] = array();

$dataResponse = array();
// rest of columns  ....

if ($entity->getPaises() instanceof Pais) {
$paises = array();
foreach ($entity->getPaises() as $pais) {
$paises[] = $pais->getNombre();
}

$dataResponse['paises'] = $paises;
}

$response['entities'][] = $dataResponse;
return new JsonResponse($response);
}
}

Возможно, правильный путь — это пройти через DQL в Doctrine Repository, но тогда возникает проблема с производительностью, и здесь я не эксперт, поэтому мне нужна подсказка или обходной путь.

Теперь с этими же классами у меня также проблема связана с Pais класс, потому что, как вы заметили, я добавил обратную сторону $fabricanteDistribuidor так, я должен вставить это всякий раз, когда я хочу вставить новый Pais или просто рассказать доктрине, как бороться с прокси внутри нее? Я пока не ясно, как работает владение / обратная сторона, но, возможно, из-за этого я сделал то, что показывал мой код. Любой совет по этому поводу тоже?

0

Решение

Может быть, вам не хватает для инициализации $paises (а также $fabricanteDistribuidor) коллекция? Разве это не должно выглядеть так?

class FabricanteDistribuidor
{
/**
* @ORM\ManyToMany(targetEntity="AppBundle\Entity\Pais", mappedBy="fabricanteDistribuidor", cascade={"persist"})
*/
private $paises;

public function __construct()
{
$this->paises = new ArrayCollection(); // don't forget to import it
}

....
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]