Жадная загрузка документов в doctrine mongo db
Кажется что-то упускаю в работе доктрины с монго. Подскажите пожалуйста: Есть
/**
* @MongoDB\MappedSuperclass
* @MongoDB\DiscriminatorField("type")
* @MongoDB\DiscriminatorMap({
* "hotel"="App\Document\Attributes\HotelAttributes",
* "apartment"="App\Document\Attributes\ApartmentAttributes",
*/
abstract class AbstractAttribute
{
/**
* @MongoDB\Id
* @MongoDB\UniqueIndex()
*/
protected string $id;
...
}
И несколько классов наследников, типа:
namespace App\Document\Attributes;
use Doctrine\ODM\MongoDB\Mapping\Annotations as MongoDB;
/**
* @MongoDB\Document(collection="attributes")
* @MongoDB\InheritanceType("SINGLE_COLLECTION")
* @MongoDB\HasLifecycleCallbacks
*/
class HotelAttributes extends AbstractAttribute
{
/**
* @MongoDB\Field(
* type="int",
* nullable=false,
* name="bed_places",
* )
*/
protected int $bedPlaces;
И
class Resources
{
/**
* @MongoDB\ReferenceOne(
* targetDocument=AbstractAttribute::class,
* storeAs="dbRefWithDb",
* orphanRemoval=true,
* cascade={"all"}
* )
*/
protected AbstractAttribute $attributes;
...
}
Ресурс создаётся нормально, но при выборке по id, поле attributes не подгружается, пока не обратишься к свойству напрямую, т.е.:
$resource = $this->dm->getRepository(Resources::class)->find($id);
$resource->getAttributes() - возвратит
а $resource->getAttributes()->getCreated() - дату создания и все поля.
Вопроса два:
- Как заставить доктрину автоматом подгружать все данные?
- Как указать репозиторий для абстрактного класса в моём примере?
Спасибо за помощь.