Настройка:
У меня есть следующий код двух моделей сущностей:
Учетная запись, представляющая учетную запись пользователя и имеющая внешний ключ от класса.
<?php
namespace models;
/**
* @Entity
*/
class Account
{
/**
* @Id @Column(type="integer")
* @GeneratedValue(strategy="AUTO")
*/
public $id;
/**
* @OneToOne(targetEntity="Classroom")
*/
public $classroom;
}
Класс, представляющий класс, в который зачислен студент.
<?php
namespace models;
/**
* @Entity
*/
class Classroom
{
/**
* @Id @Column(type="integer")
* @GeneratedValue(strategy="AUTO")
*/
public $id;
/**
* @Column(type="string")
*/
public $name;
}
Проблема:
Когда я делаю $account = $em->find('Account',$id);
, я правильно получаю учетную запись из базы данных, но $account->classroom;
является пустым (не нулевым) объектом. Немного поэкспериментировав, я попытался добавить перед выполнением следующую команду:
$em->getRepository('Classroom')->findAll().
Затем я выполнил $em->find('Account', $id );
и классный объект внутри объекта учетной записи вернулся правильно.
Спекуляция:
Я предполагаю, что что-то не так с тем, как объекты загружаются и кэшируются из базы данных, потому что, если я загружаю все объекты класса (или объект, связанный с учетной записью I) до того, как я выполню find()
, тогда все в порядке.
Поскольку я новичок в PHP и Doctrine, я ищу дальнейшие мнения / помощь для решения этой проблемы.