我有一个叫“专业领域”的实体
use Doctrine\ORM\Mapping as ORM;
use ApiPlatform\Metadata\ApiFilter;
use ApiPlatform\Metadata\ApiProperty;
use ApiPlatform\Metadata\ApiResource;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping\InverseJoinColumn;
use ApiPlatform\Doctrine\Orm\Filter\OrderFilter;
use App\Repository\AreasProfesionalesRepository;
use Doctrine\Common\Collections\ArrayCollection;
use ApiPlatform\Doctrine\Orm\Filter\SearchFilter;
use Symfony\Component\Serializer\Annotation\Groups;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
#[ORM\Entity(repositoryClass: AreasProfesionalesRepository::class)]
#[UniqueEntity(fields: ['Codigo'], message: 'Ya existe un area profesional registrada con ese mismo código')]
#[ApiFilter(SearchFilter::class, properties: ['Denominacion' => 'partial', 'Codigo' => 'partial', 'familiasProfesionales'=> 'exact'])]
#[ApiFilter(OrderFilter::class, properties: ['id'], arguments: ['orderParameterName' => 'order'])]
#[ApiResource(paginationEnabled: false,formats: ['json' => ['application/json']],
normalizationContext: ['groups' => ['read']],
denormalizationContext: ['groups' => ['write']])]
class AreasProfesionales
{
#[ORM\Id]
#[ORM\GeneratedValue]
#[ORM\Column]
#[Groups(['read','write'])]
#[ApiProperty(writable:true)]
private ?int $id = null;
#[ORM\Column(length: 255)]
#[Groups(['read','write'])]
private ?string $Denominacion = null;
#[ORM\Column(length: 20, unique:true)]
#[Groups(['read', 'write'])]
private ?string $Codigo = null;
#[ORM\ManyToOne(inversedBy: 'Familiasprofesionales_areasprofesionales')]
#[Groups(['read','write'])]
#[InverseJoinColumn(name: "familias_profesionales_id", referencedColumnName: "id")]
#[ApiProperty(readableLink: true, writableLink: true)]
private ?FamiliasProfesionales $familiasProfesionales = null;
#[ORM\OneToMany(mappedBy: 'areasProfesionales', targetEntity: CertificadosProfesionalidad::class)]
private Collection $Areasprofesionales_certificadosprofesionalidad;
#[ORM\OneToMany(mappedBy: 'areasProfesionales', targetEntity: AreasProfesionalesDocentes::class)]
private Collection $Areasprofesionales_areasprofesionalesdocentes;
#[ORM\OneToMany(mappedBy: 'areasProfesionales', targetEntity: AreasProfesionalesItinerariosFormativos::class)]
private Collection $Areasprofesionales_areasprofesionalesitinerariosformativos;
public function __construct()
{
$this->Areasprofesionales_certificadosprofesionalidad = new ArrayCollection();
$this->Areasprofesionales_areasprofesionalesdocentes = new ArrayCollection();
$this->Areasprofesionales_areasprofesionalesitinerariosformativos = new ArrayCollection();
}
public function getId(): ?int
{
return $this->id;
}
public function getDenominacion(): ?string
{
return $this->Denominacion;
}
public function setDenominacion(string $Denominacion): self
{
$this->Denominacion = $Denominacion;
return $this;
}
public function getCodigo(): ?string
{
return $this->Codigo;
}
public function setCodigo(string $Codigo): self
{
$this->Codigo = $Codigo;
return $this;
}
public function getFamiliasProfesionales(): ?FamiliasProfesionales
{
return $this->familiasProfesionales;
}
public function setFamiliasProfesionales(?FamiliasProfesionales $familiasProfesionales): self
{
$this->familiasProfesionales = $familiasProfesionales;
return $this;
}
/**
* @return Collection<int, CertificadosProfesionalidad>
*/
/*public function getAreasprofesionalesCertificadosprofesionalidad(): Collection
{
return $this->Areasprofesionales_certificadosprofesionalidad;
}
public function addAreasprofesionalesCertificadosprofesionalidad(CertificadosProfesionalidad $areasprofesionalesCertificadosprofesionalidad): self
{
if (!$this->Areasprofesionales_certificadosprofesionalidad->contains($areasprofesionalesCertificadosprofesionalidad)) {
$this->Areasprofesionales_certificadosprofesionalidad->add($areasprofesionalesCertificadosprofesionalidad);
$areasprofesionalesCertificadosprofesionalidad->setAreasProfesionales($this);
}
return $this;
}
public function removeAreasprofesionalesCertificadosprofesionalidad(CertificadosProfesionalidad $areasprofesionalesCertificadosprofesionalidad): self
{
if ($this->Areasprofesionales_certificadosprofesionalidad->removeElement($areasprofesionalesCertificadosprofesionalidad)) {
// set the owning side to null (unless already changed)
if ($areasprofesionalesCertificadosprofesionalidad->getAreasProfesionales() === $this) {
$areasprofesionalesCertificadosprofesionalidad->setAreasProfesionales(null);
}
}
return $this;
}*/
/**
* @return Collection<int, AreasProfesionalesDocentes>
*/
/public function getAreasprofesionalesAreasprofesionalesdocentes(): Collection
{
return $this->Areasprofesionales_areasprofesionalesdocentes;
}
public function addAreasprofesionalesAreasprofesionalesdocente(AreasProfesionalesDocentes $areasprofesionalesAreasprofesionalesdocente): self
{
if (!$this->Areasprofesionales_areasprofesionalesdocentes->contains($areasprofesionalesAreasprofesionalesdocente)) {
$this->Areasprofesionales_areasprofesionalesdocentes->add($areasprofesionalesAreasprofesionalesdocente);
$areasprofesionalesAreasprofesionalesdocente->setAreasProfesionales($this);
}
return $this;
}
public function removeAreasprofesionalesAreasprofesionalesdocente(AreasProfesionalesDocentes $areasprofesionalesAreasprofesionalesdocente): self
{
if ($this->Areasprofesionales_areasprofesionalesdocentes->removeElement($areasprofesionalesAreasprofesionalesdocente)) {
// set the owning side to null (unless already changed)
if ($areasprofesionalesAreasprofesionalesdocente->getAreasProfesionales() === $this) {
$areasprofesionalesAreasprofesionalesdocente->setAreasProfesionales(null);
}
}
return $this;
}*/
/**
* @return Collection<int, AreasProfesionalesItinerariosFormativos>
*/
public function getAreasprofesionalesAreasprofesionalesitinerariosformativos(): Collection
{
return $this->Areasprofesionales_areasprofesionalesitinerariosformativos;
}
public function addAreasprofesionalesAreasprofesionalesitinerariosformativo(AreasProfesionalesItinerariosFormativos $areasprofesionalesAreasprofesionalesitinerariosformativo): self
{
if (!$this->Areasprofesionales_areasprofesionalesitinerariosformativos->contains($areasprofesionalesAreasprofesionalesitinerariosformativo)) {
$this->Areasprofesionales_areasprofesionalesitinerariosformativos->add($areasprofesionalesAreasprofesionalesitinerariosformativo);
$areasprofesionalesAreasprofesionalesitinerariosformativo->setAreasProfesionales($this);
}
return $this;
}
public function removeAreasprofesionalesAreasprofesionalesitinerariosformativo(AreasProfesionalesItinerariosFormativos $areasprofesionalesAreasprofesionalesitinerariosformativo): self
{
if ($this->Areasprofesionales_areasprofesionalesitinerariosformativos->removeElement($areasprofesionalesAreasprofesionalesitinerariosformativo)) {
// set the owning side to null (unless already changed)
if ($areasprofesionalesAreasprofesionalesitinerariosformativo->getAreasProfesionales() === $this) {
$areasprofesionalesAreasprofesionalesitinerariosformativo->setAreasProfesionales(null);
}
}
return $this;
}
public function __toString()
{
return $this->id;
}
我有另一个实体叫“家庭专业”
use Doctrine\ORM\Mapping as ORM;
use ApiPlatform\Metadata\ApiFilter;
use ApiPlatform\Metadata\ApiProperty;
use ApiPlatform\Metadata\ApiResource;
use Doctrine\Common\Collections\Collection;
use ApiPlatform\Doctrine\Orm\Filter\OrderFilter;
use Doctrine\Common\Collections\ArrayCollection;
use ApiPlatform\Doctrine\Orm\Filter\SearchFilter;
use App\Repository\FamiliasProfesionalesRepository;
use Symfony\Component\Serializer\Annotation\Groups;
#[ORM\Entity(repositoryClass: FamiliasProfesionalesRepository::class)]
#[ApiFilter(SearchFilter::class, properties: ['Denominacion' => 'partial'])]
#[ApiFilter(OrderFilter::class, properties: ['id', 'Denominacion'], arguments: ['orderParameterName' => 'order'])]
#[ApiResource(paginationEnabled: false,formats: ['json' => ['application/json']],
normalizationContext: ['groups' => ['read']],
denormalizationContext: ['groups' => ['write']])]
class FamiliasProfesionales
{
#[ORM\Id]
#[ORM\GeneratedValue]
#[ORM\Column]
#[Groups(['read','write'])]
#[ApiProperty(writable:true)]
private ?int $id = null;
#[ORM\Column(length: 255)]
#[Groups(['read','write'])]
private ?string $Denominacion = null;
#[ORM\OneToMany(mappedBy: 'familiasProfesionales', targetEntity: AreasProfesionales::class)]
#[ORM\JoinColumn()]
private Collection $Familiasprofesionales_areasprofesionales;
public function __construct()
{
$this->Familiasprofesionales_areasprofesionales = new ArrayCollection();
}
public function getId(): ?int
{
return $this->id;
}
public function getDenominacion(): ?string
{
return $this->Denominacion;
}
public function setDenominacion(string $Denominacion): self
{
$this->Denominacion = $Denominacion;
return $this;
}
/**
* @return Collection<int, AreasProfesionales>
*/
public function getFamiliasprofesionalesAreasprofesionales(): Collection
{
return $this->Familiasprofesionales_areasprofesionales;
}
public function addFamiliasprofesionalesAreasprofesionale(AreasProfesionales $familiasprofesionalesAreasprofesionale): self
{
if (!$this->Familiasprofesionales_areasprofesionales->contains($familiasprofesionalesAreasprofesionale)) {
$this->Familiasprofesionales_areasprofesionales->add($familiasprofesionalesAreasprofesionale);
$familiasprofesionalesAreasprofesionale->setFamiliasProfesionales($this);
}
return $this;
}
public function removeFamiliasprofesionalesAreasprofesionale(AreasProfesionales $familiasprofesionalesAreasprofesionale): self
{
if ($this->Familiasprofesionales_areasprofesionales->removeElement($familiasprofesionalesAreasprofesionale)) {
// set the owning side to null (unless already changed)
if ($familiasprofesionalesAreasprofesionale->getFamiliasProfesionales() === $this) {
$familiasprofesionalesAreasprofesionale->setFamiliasProfesionales(null);
}
}
return $this;
}
public function __toString()
{
return $this->id;
}
}
我在我的项目中使用API平台来显示所有的操作和服务。
有没有办法从集合中只获取一个字段?我希望实体“AreasProfesionales”只出现,例如,来自“FamiliasProfesionales”的id。如果我需要在POST方法中创建一个新的专业领域,我只需要输入它所属的专业系列的id,而不必输入所有其他数据,但是,它会返回它的所有字段。提前感谢您。
我一直在尝试使用API平台的读写方法,但我没有得到我想要的结果,我认为问题是Api平台与IRI一起工作,而不是与id一起工作(但我需要与此一起工作)。
1条答案
按热度按时间dsekswqp1#
是的,您可以:
您可以遵循以下文档:https://api-platform.com/docs/core/serialization/
此致!