我爲Symfony 3.0中創建的Doctrine創建了以下清單實體對象。如何將Doctrine Annotation Information轉換爲Array?
簡而言之,我如何才能訪問通過註釋放入實體的信息?
例如,companyID具有引用inversedBy =「location」的ManyToOne註釋。這個特定的信息對我來說非常有用,所以我可以通過外鍵或父母關係來判斷它是否是子女關係。
如果我能以某種方式獲得關於我通過註釋描述的實體的信息,那麼這個信息會很棒。這可能嗎?本質上,我正在尋找實體上的自省功能。
<?php
namespace AppBundle\Entity;
use Gedmo\Translatable\Translatable;
use Doctrine\ORM\Mapping as ORM;
use Gedmo\Mapping\Annotation as Gedmo;
use Symfony\Component\Validator\Constraints as Assert;
/**
* Inventory
*
* @ORM\Table(name="distribution_inventory")
* @ORM\Entity(repositoryClass="AppBundle\Repository\InventoryRepository")
*/
class Inventory implements Translatable {
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
* @Gedmo\Translatable
* @ORM\Column(name="name", type="string", length=255, unique=true)
*/
private $name;
/**
* @var string
* @Gedmo\Slug(fields={"name","id"},suffix=".html")
* @ORM\Column(name="inventoryslug", type="string", length=255, nullable=false, nullable=true)
*/
private $inventoryslug;
/**
* @var string
*
* @ORM\Column(name="barcode", type="string", length=255, nullable=true)
*/
private $barcode;
/**
* @var string
* @Gedmo\Translatable
* @ORM\Column(name="description", type="text", nullable=true)
*/
private $description;
/**
* @var string
* @ORM\Column(name="imagename", type="string", nullable=true)
*/
private $imagename;
/**
* @Gedmo\Locale
* Used locale to override Translation listener`s locale
* this is not a mapped field of entity metadata, just a simple property
*/
private $locale;
/**
* @var \AppBundle\Entity\InventoryCategory
*
* @ORM\ManyToOne(targetEntity="\AppBundle\Entity\InventoryCategory")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="categoryid", referencedColumnName="id")
* })
*/
private $category;
/**
* @var \AppBundle\Entity\Company
* @Assert\Type(type="\AppBundle\Entity\Company")
* @Assert\Valid()
* @ORM\ManyToOne(targetEntity="\AppBundle\Entity\Company", inversedBy="Location")
* @ORM\JoinColumn(name="companyid", referencedColumnName="id", onDelete="CASCADE")
*/
protected $companyId;
/**
* @var \DateTime $created
*
* @Gedmo\Timestampable(on="create")
* @ORM\Column(type="datetime")
*/
private $created;
/**
* @var \DateTime $updated
*
* @Gedmo\Timestampable(on="update")
* @ORM\Column(type="datetime")
*/
private $updated;
/**
* @var string
* @ORM\Column(name="defaultsellprice",precision=14, scale=2, nullable=true)
*/
private $defaultsellprice;
/**
* @var boolean
*
* @ORM\Column(name="onwaycount", type="integer", nullable=false)
*/
private $onwaycount;
/**
* @var boolean
*
* @ORM\Column(name="instorecount", type="integer", nullable=false)
*/
private $instorecount;
/**
* @var boolean
*
* @ORM\Column(name="wayoutcount", type="integer", nullable=false)
*/
private $wayoutcount;
/**
* @var boolean
*
* @ORM\Column(name="instore", type="string", length=10, nullable=false)
*/
private $instore;
/**
* @var string
*
* @ORM\Column(name="isarchived", type="string", length=5, nullable=false,options={"default":false})
*/
private $isarchived;
/**
* @var string
*
* @ORM\Column(name="archivestatus", type="string", length=5, nullable=false,options={"default":true})
*/
private $archivestatus;
function __construct() {
$this->onwaycount=0;
$this->instore=FALSE;
$this->instorecount=0;
$this->wayoutcount=0;
}
/**
* Get id
*
* @return int
*/
public function getId() {
return $this->id;
}
/**
* Set name
*
* @param string $name
*
* @return Inventory
*/
public function setName($name) {
$this->name = $name;
return $this;
}
/**
* Get name
*
* @return string
*/
public function getName() {
return $this->name;
}
/**
* Set barcode
*
* @param string $barcode
*
* @return Inventory
*/
public function setBarcode($barcode) {
$this->barcode = $barcode;
return $this;
}
/**
* Get barcode
*
* @return string
*/
public function getBarcode() {
return $this->barcode;
}
/**
* Set description
*
* @param string $description
*
* @return Inventory
*/
public function setDescription($description) {
$this->description = $description;
return $this;
}
/**
* Get description
*
* @return string
*/
public function getDescription() {
return $this->description;
}
public function getImagename() {
return $this->imagename;
}
public function getCategory() {
return $this->category;
}
public function getCompanyId() {
return $this->companyId;
}
public function getCreated() {
return $this->created;
}
public function getUpdated() {
return $this->updated;
}
public function getOnwaycount() {
return $this->onwaycount;
}
public function getInstorecount() {
return $this->instorecount;
}
public function getWayoutcount() {
return $this->wayoutcount;
}
public function getInstore() {
return $this->instore;
}
public function setImagename($imagename) {
$this->imagename = $imagename;
return $this;
}
public function setCategory(\AppBundle\Entity\InventoryCategory $category) {
$this->category = $category;
return $this;
}
public function setCompanyId(\AppBundle\Entity\Company $companyId) {
$this->companyId = $companyId;
return $this;
}
public function setCreated(\DateTime $created) {
$this->created = $created;
return $this;
}
public function setUpdated(\DateTime $updated) {
$this->updated = $updated;
return $this;
}
public function setOnwaycount($onwaycount) {
$this->onwaycount = $onwaycount;
return $this;
}
public function setInstorecount($instorecount) {
$this->instorecount = $instorecount;
return $this;
}
public function setWayoutcount($wayoutcount) {
$this->wayoutcount = $wayoutcount;
return $this;
}
public function setInstore($instore) {
$this->instore = $instore;
return $this;
}
public function getDefaultsellprice() {
return $this->defaultsellprice;
}
public function setDefaultsellprice($defaultsellprice) {
$this->defaultsellprice = $defaultsellprice;
return $this;
}
public function getInventoryslug() {
return $this->inventoryslug;
}
public function setInventoryslug($inventoryslug) {
$this->inventoryslug = $inventoryslug;
return $this;
}
public function setTranslatableLocale($locale) {
$this->locale = $locale;
}
public function getIsarchived() {
return $this->isarchived;
}
public function getArchivestatus() {
return $this->archivestatus;
}
public function setIsarchived($isarchived) {
$this->isarchived = $isarchived;
return $this;
}
public function setArchivestatus($archivestatus) {
$this->archivestatus = $archivestatus;
return $this;
}
}
發現這個不知道這是否會幫助,但(http://tocacar.com/2013/01/25/doctrine2-object-introspection/)
您可能想看看[Doctrine AnnotationReader類](http://www.doctrine-project.org/api/common/2.2/class-Doctrine.Common.Annotations.AnnotationReader.html) – ccKep
I最近也發現了這個問題(http://doctrine-orm.readthedocs.org/en/latest/reference/metadata-drivers.html),我認爲這可能是我需要的,但還不確定。 –