Ответы пользователя по тегу Doctrine ORM
  • Почему в Symfony 3.4 через cli маппятся связи, а через web нет?

    Keanor
    @Keanor
    Ведущий разработчик
    Почему-то некорректно маппит имя свойства со статусом. Попробуйте name для связи со статусом явно задать.
    Ответ написан
  • Что применить - xPDO или doctrine в хайлоад проекте?

    Keanor
    @Keanor
    Ведущий разработчик
    Посмотрите в сторону apigility, оно на базе zend framwork.

    В одном из сложных API использовали apigility + Doctrine
    Ответ написан
    Комментировать
  • Как правильно создать запрос в доктрине?

    Keanor
    @Keanor
    Ведущий разработчик
    В докблоке метода join пример использования
    $qb = $em->createQueryBuilder()
             ->select('u')
             ->from('User', 'u')
             ->join('u.Phonenumbers', 'p', Expr\Join::WITH, 'p.is_primary = 1');


    вы по связи джойните?

    Покажите что вы передаете во view, если вы туда передаете $queryBuilder->getQuery() то ничего работать и не должно.
    Ответ написан
  • Как правильно сохранить данные Zend\Form + Doctrine 2?

    Keanor
    @Keanor
    Ведущий разработчик
    Что за DoctrineHydrator? Я у себя только DoctrineObject нашел, всегда его и использовал.

    Как происходит гидрация через DoctrineObject - Doctrine получает метадату для сущности которую вы гидрируете, и итерируясь по массиву переданому в hydrate обрабатывает только записи ключи которых есть в св-вах сущности. При обработки каждого ключа массива гидратор проверяет - связь ли это, и если связь то какая: в нём есть два метода для гидрации данных по связям: toOne() и toMany(), так как у вас судя по схеме ManyToMany вызовется метод toMany(), я его сюда скопирую:

    // If the collection contains identifiers, fetch the objects from database
            foreach ($values as $value) {
                if ($value instanceof $target) {
                    $collection[] = $value;
                } elseif ($value !== null) {
                    $targetObject = $this->find($value, $target);
    
                    if ($targetObject !== null) {
                        $collection[] = $targetObject;
                    }
                }
            }


    Как видите он умеет работать только с 2 видами данных:
    1) с набором ID (тогда он сам ищет сущность, и проставляет связи)
    2) с набором сущностей

    В вашем случае передается набор массивов, поэтому не работает.

    Чтобы заработало, нужно использовать гидратор в том числе и для Fieldset'а, тогда в момент когда будет гидрироваться основная форма элементы уже будут сгидрированы, и вместо массива массивов toMany() получит массив сущностей.
    Ответ написан
    Комментировать
  • Как правильно подключать Doctrine в ZF2?

    Keanor
    @Keanor
    Ведущий разработчик
    У нас в каждом модуле лежат именно те сущности, которые этому модулю "принадлежат". Единственное что для этого нужно: config.module.php

    Покажите свой конфиг, как вы указываете доктрине где искать сущности. Вот мой пример из работающего кода:

    'doctrine' => array (
            'driver' => array(
                'catalog_entities' => array(
                    'class' =>'Doctrine\ORM\Mapping\Driver\AnnotationDriver',
                    'cache' => 'array',
                    'paths' => array(__DIR__ . '/../src/Catalog/Entity')
                ),
    
                'orm_default' => array(
                    'drivers' => array(
                        'Catalog\Entity' => 'catalog_entities'
                    ),
                ),
            ),
        ),
    Ответ написан
    Комментировать
  • Doctrine 2 relationships - как решить проблему?

    Keanor
    @Keanor
    Ведущий разработчик
    Как вариант можно дописать нативный sql чтобы он еще и картинки вытаскивал, и гидрировать продукты вместе с картинками.
    Ответ написан
    Комментировать