io SimpliFly il mio codice, ho te prossimo:Symfony ManyToOne rapporto getter resi oggetto vuoto
Dottore entità:
use ...\...\Entity\Paciente;
class Doctor extends Usuario {
public function __construct() {
...
$this->pacientes = new ArrayCollection();
...
}
/**
* Número de colegiado - numColegiado
*
* @var string
*
* @ORM\Column(name="numColegiado", type="string", length=255, unique=true)
*/
protected $numColegiado;
/**
* @ORM\OneToMany(targetEntity="Paciente", mappedBy="doctor")
* @var \Doctrine\Common\Collections\ArrayCollection
*/
private $pacientes;
...
}
Paciente entità:
use \...\...\Entity\Doctor;
...
class Paciente extends Usuario {
}
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\ManyToOne(targetEntity="Doctor", inversedBy="pacientes")
* @ORM\JoinColumn(name="doctorNum", referencedColumnName="numColegiado", nullable=TRUE)
*
* @var type
*/
protected $doctor;
...
/**
* Set doctor
*
* @param Doctor $doctor
* @return Paciente
*/
public function setDoctor(Doctor $doctor = null)
{
$this->doctor = $doctor;
return $this;
}
/**
* Get doctor
*
* @return Doctor
*/
public function getDoctor()
{
return $this->doctor;
}
}
Ok, la questione è, quando eseguo quel codice (ovviamente c'è una relazione creata e questo oggetto esiste nel database):
\Doctrine\Common\Util\Debug::dump($paciente->getDoctor());
esso stampa che segue:
object(stdClass)#804 (28) { ["__CLASS__"]=> string(34) "Knoid\CorcheckBundle\Entity\Doctor" ["__IS_PROXY__"]=> bool(true) ["__PROXY_INITIALIZED__"]=> bool(false) ["id"]=> NULL ["numColegiado"]=> NULL ["pacientes"]=> NULL ["nombre"]=> NULL ["apellidos"]=> NULL ["dni"]=> NULL ["tipo"]=> NULL ["username"]=> NULL ["usernameCanonical"]=> NULL ["email"]=> NULL ["emailCanonical"]=> NULL ["enabled"]=> NULL ["salt"]=> NULL ["password"]=> NULL ["plainPassword"]=> NULL ["lastLogin"]=> NULL ["confirmationToken"]=> NULL ["passwordRequestedAt"]=> NULL ["groups"]=> NULL ["locked"]=> NULL ["expired"]=> NULL ["expiresAt"]=> NULL ["roles"]=> NULL ["credentialsExpired"]=> NULL ["credentialsExpireAt"]=> NULL }
Come si può vedere, tutte le atributes dell'oggetto "dottore" sono nulli, l'oggetto esiste, ma è vuota, nel mio DB esiste questo oggetto e 'isn' t vuoto.
Qualche idea di cosa sta succedendo?
In qualche modo è parente di quello. Ora ho ricevuto questa eccezione: "[1/2] ErrorException: Avviso: indice indefinito: id in /var/www/vhosts/default/htdocs/Symfony/app/cache/dev/doctrine/orm/Proxies/__CG__KnoidCorcheckBundleEntityDoctor.php line 48 "ma solo se provo a ottenere l'identificazione del medico. –
Suppongo tu abbia definito/generato un getter per l'id? –
Sì, "public function getId() { return $ this-> id; }" nella classe di entità medico –