Жадная загрузка документов в 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() - возвратит

dump в twig а $resource->getAttributes()->getCreated() - дату создания и все поля. Вопроса два:

  1. Как заставить доктрину автоматом подгружать все данные?
  2. Как указать репозиторий для абстрактного класса в моём примере?

Спасибо за помощь.


Ответы (0 шт):