我在symfony 4.2 proyect(REST API)上使用Donctrine 2.6.3。 我在生成一些json时遇到了麻烦 Theres有2个基本实体:
class Usuarios{
/**
* @var int
*
* @ORM\Column(name="dni", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $dni;
/**
* @var string
*
* @ORM\Column(name="nyape", type="string", length=30, nullable=false)
*/
private $nyape;
public function getDni(): ?int{
return $this->dni;
}
public function getNyape(): ?string{
return $this->nyape;
}
public function setNyape(string $nyape): self{
$this->nyape = $nyape;
return $this;
}
/**
* @ORM\OneToMany(targetEntity="Infracciones", mappedBy="dni", cascade={"all"})
* @var Doctrine\Common\Collection\ArrayCollection
*/
private $infracciones;
}
class Infracciones{
/**
* @var int
*
* @ORM\Column(name="nro_infraccion", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $nroInfraccion;
/**
* @var float
*
* @ORM\Column(name="monto", type="float", precision=10, scale=0, nullable=false)
*/
private $monto;
/**
* @var \Usuarios
*
* @ORM\ManyToOne(targetEntity="Usuarios", inversedBy="infracciones")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="dni", referencedColumnName="dni")
* })
*/
private $dni;
public function getNroInfraccion(): ?int{
return $this->nroInfraccion;
}
public function getMonto(): ?float{
return $this->monto;
}
public function setMonto(float $monto): self{
$this->monto = $monto;
return $this;
}
public function getDni(): ?Usuarios{
return $this->dni;
}
public function setDni(?Usuarios $dni): self{
$this->dni = $dni;
return $this;
}
}
在某些控制器中有一种方法:
public function searchInfraccionesDeUsuarioPorDniV2($dni){
$entityManager = $this->getDoctrine()->getEntityManager();
$query = $entityManager->createQuery('SELECT u,i
FROM App\Entity\Infracciones u
JOIN u.dni i where i.dni=11111111');
$usuarios = $query->getArrayResult();
$response = new Response();
$response->headers->set('Content-Type', 'application/json');
$response->setContent(json_encode($usuarios));
return $response;
}
它生成此json:
[
{
"nroInfraccion":1,
"monto":11,
"dni":{
"dni":11111111,
"nyape":"Lucas"
}
},
{
"nroInfraccion":2,
"monto":22,
"dni":{
"dni":11111111,
"nyape":"Lucas"
}
}
]
这不是我所需要的。 我需要这种json格式:
{
"dni":11111111,
"nyape":"Lucas",
"infracciones":[
{
"nroInfraccion":1,
"monto":11
},
{
"nroInfraccion":2,
"monto":22
}
]
}
我认为该关系的所有者(mappedby?inverdedby?)存在问题。 加入有问题吗? 如何撤消关系所有者?
先谢谢您。 朱利安