関連エンティティから値を取得する原因エラーの原因
-
20-12-2019 - |
質問
私は私のプロジェクトでSonataAdminBundle
から始めていますが、私は問題を取得している問題を抱えています。私はこのエンティティを持っています:
<?php
namespace PI\ProyectoBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\ORM\Event\LifecycleEventArgs;
/**
* @ORM\Entity
* @ORM\Table(name="proyectos")
* @ORM\HasLifecycleCallbacks
*/
class Proyectos {
/**
* @ORM\Id
* @ORM\Column(type="integer")
*/
protected $id;
/**
* @ORM\Column(type="string", length=45, unique=true, nullable=false)
*/
protected $nombre;
/**
* @ORM\Column(type="boolean", nullable=true)
*/
protected $estado;
/**
* @ORM\Column(type="string", length=45, nullable=false)
*/
protected $pais;
/**
* @ORM\Id
* @ORM\ManyToOne(targetEntity="PI\ClienteBundle\Entity\Clientes", cascade={"all"})
* @ORM\JoinColumn(name="cliente", referencedColumnName="id")
*/
protected $clientes;
/**
* @ORM\ManyToMany(targetEntity="PI\CentroBundle\Entity\Centros", inversedBy="proyectos", cascade={"persist"})
* @ORM\JoinTable(name="proyectos_has_centros",
* joinColumns={@ORM\JoinColumn(name="proyectos_id", referencedColumnName="id"),
* @ORM\JoinColumn(name="proyectos_cliente", referencedColumnName="cliente")},
* inverseJoinColumns={@ORM\JoinColumn(name="centros_id", referencedColumnName="id")}
* )
*/
protected $centros;
/**
* ORM\ManyToMany(targetEntity="Application\Sonata\UserBundle\Entity\User", cascade={"persist"})
* ORM\JoinTable(name="proyectos_has_system_user",
* joinColumns={@ORM\JoinColumn(name="proyectos_id", referencedColumnName="id"),
* @ORM\JoinColumn(name="proyectos_cliente", referencedColumnName="cliente")},
* inverseJoinColumns={@ORM\JoinColumn(name="system_user_id", referencedColumnName="id")}
* )
*/
protected $ingenieros;
public function __construct() {
$this->centros = new \Doctrine\Common\Collections\ArrayCollection();
$this->ingenieros = new \Doctrine\Common\Collections\ArrayCollection();
}
public function getId() {
return $this->id;
}
public function setNombre($nombre) {
$this->nombre = $nombre;
}
public function getNombre() {
return $this->nombre;
}
public function setEstado($estado) {
$this->estado = $estado;
}
public function getEstado() {
return $this->estado;
}
public function setPais($pais) {
$this->pais = $pais;
}
public function getPais() {
return $this->pais;
}
public function setClientes(\PI\ClienteBundle\Entity\Clientes $clientes) {
$this->clientes = $clientes;
}
public function getClientes() {
return $this->clientes;
}
public function setCentros(\PI\CentroBundle\Entity\Centros $centros) {
$this->centros[] = $centros;
}
public function getCentros() {
return $this->centros;
}
public function setIngenieros(\BIT\UserBundle\Entity\User $ingenieros) {
$this->ingenieros[] = $ingenieros;
}
public function getIngenieros() {
return $this->ingenieros;
}
/**
* @ORM\PrePersist
*/
public function prePersist(LifecycleEventArgs $eventArgs) {
$em = $eventArgs->getEntityManager();
$q = $em->createQuery('SELECT MAX(p.id) FROM PIProyectoBundle:Proyectos p');
$id = $q->getSingleResult(\Doctrine\ORM\Query::HYDRATE_SINGLE_SCALAR);
$this->id = $id + 1;
}
}
.
そしてこれが私が proyectoadmin.php クラス:
でフィルタを設定する方法です。protected function configureDatagridFilters(DatagridMapper $filter) {
$filter
->add('nombre', null, array('label' => 'Nombre'))
->add('estado', null, array('label' => 'Estado'))
->add('pais', null, array('label' => 'País'))
->add('clientes', null, array('label' => 'Asignar Clientes'))
->add('ingenieros', null, array(), null, array('expanded' => true, 'multiple' => true))
->add('centros', null, array('label' => 'Asignar Centros'));
}
.
しかし私はこのエラーを得る:
通知:未定義の索引:Ingenieros /var/www/html/pingenieros/vendor/sonata-project/doctrine-orm-admin-bundle/ssonata/doctrineormadminbundle/guesser/filtertypeeguesser.php. 線64
私が間違っていること?
解決 2
ネバーマインドは私の悪かった、このコードを見る:
/**
* ORM\ManyToMany(targetEntity="Application\Sonata\UserBundle\Entity\User", cascade={"persist"})
* ORM\JoinTable(name="proyectos_has_system_user",
* joinColumns={@ORM\JoinColumn(name="proyectos_id", referencedColumnName="id"),
* @ORM\JoinColumn(name="proyectos_cliente", referencedColumnName="cliente")},
* inverseJoinColumns={@ORM\JoinColumn(name="system_user_id", referencedColumnName="id")}
* )
*/
protected $ingenieros;
.
にするべきである:
/**
* @ORM\ManyToMany(targetEntity="Application\Sonata\UserBundle\Entity\User", cascade={"persist"})
* @ORM\JoinTable(name="proyectos_has_system_user",
* joinColumns={@ORM\JoinColumn(name="proyectos_id", referencedColumnName="id"),
* @ORM\JoinColumn(name="proyectos_cliente", referencedColumnName="cliente")},
* inverseJoinColumns={@ORM\JoinColumn(name="system_user_id", referencedColumnName="id")}
* )
*/
protected $ingenieros;
.
ORM
定義の前に @ に注意してください。
他のヒント
を試してください
->add('ingenieros', 'entity', array(
'class' => 'AcmeMyBundle:Entity', //your ingenieros entity
'property' => 'name', // any class property
'multiple' => true,
'expanded' => true))
. 所属していません StackOverflow