Articles of Доктрина

Доктрина 2: результат запроса как ассоциативный массив

В моем классе Repository я использую следующий код для запроса: $query = $this->getEntityManager()->createQuery(" SELECT s.term, COUNT(s.term) AS freq FROM App\Entities\SearchTerm s GROUP BY s.term ORDER BY s.term ASC "); $result = $query->getResult(); В результате я получаю что-то вроде: array (size=4) 0 => array (size=2) 'term' => string '' (length=0) 'freq' => string '1' (length=1) 1 […]

Как проверить, изменилась ли сущность в Doctrine 2?

Мне нужно проверить, изменился ли постоянный объект и его необходимо обновить в базе данных. То, что я сделал (и не работало), было следующим: $product = $entityManager->getRepository('Product')->find(3); $product->setName('A different name'); var_export($entityManager->getUnitOfWork()->isScheduledForUpdate($product)); Этот код печатает всегда false , я также попытался выполнить флеш перед проверкой единицы работы, но не работал. У кого-нибудь есть предложение?

Ошибка при использовании пользовательской функции DQL с помощью Doctrine и Symfony2

Я использую Symfony 2 и доктрину ORM. Я хочу создать и зарегистрировать пользовательскую функцию DQL. Фактически, я хочу использовать функцию SQL « CAST » в моем запросе, например: $qb = $this->_em->createQueryBuilder(); $qb->select('d') ->from('\Test\MyBundle\Entity\MyEntity', 'd') ->orderBy('CAST(d.myField AS UNSIGNED)', 'ASC') return $qb->getQuery()->getResult(); Для этого я создал «CastFunction», которые расширяют «FunctionNode»: namespace Test\MyBundle\DQL; use Doctrine\ORM\Query\AST\Functions\FunctionNode; use Doctrine\ORM\Query\Lexer; use […]

Каков ваш опыт работы с Doctrine ORM?

Каков ваш опыт в учении ? Я никогда не был очень похожим на ORM, я в основном управлялся только с базовым уровнем абстракции db, таким как adodb. Но я понял все концепции и преимущества этого. Поэтому, когда появился проект, который требовал ORM, я подумал, что я дам одну из возможностей ORM. Я должен решить между […]

Doctrine listener – запуск действия только при изменении поля

Как проверить, изменилось ли поле? Я хотел бы вызвать действие в preSave() только если определенное поле изменилось, eq public function preSave() { if ($bodyBefore != $bodyNow) { $this->html = $this->_htmlify($bodyNow); } } Вопрос в том, как получить это $bodyBefore и $bodyNow

Отношение доктрины

У меня есть шаблон объекта и еще один запрос. По сути, шаблон представляет собой html-форму, и запрос будет представлять набор значений, заполненных формой, и ссылку на идентификатор шаблона. class Request { /** * @Id @Column(type="integer") * @GeneratedValue */ private $id; /** * @ManyToOne(targetEntity="Template", cascade={"persist"}) * @JoinColumn(name="templateId", referencedColumnName="id", nullable=false) */ private $template; … То, что я […]

Несколько первичных ключей с Doctrine 1 и Symfony 1?

Я уже знаю, что невозможно работать с несколькими первичными ключами в Symfony 1 и Doctrine 1, но вы, ребята, знаете какие-нибудь хорошие обходные пути?

Функция substring_index в доктрине ORM

Я должен использовать функцию SUBSTRING_INDEX в доктрине ORM в symfony 2. Как я могу это сделать? Прямо сейчас, используя его внутри запроса, я получаю неопределенную ошибку функции: [Syntax Error] line 0, col 299: Error: Expected known function, got 'SUBSTRING_INDEX' Я использую эту функцию для получения первого числа, например: 11.48.205.1 Как я могу это решить?

Доктрина 2 пользовательских типа

Я пытаюсь реализовать Datatype Doctrine Custom для сохранения десятичных знаков в валюте как целое число SQL. Я не могу изменить дизайн базы данных, поэтому мне придется: <?php namespace Doctrine\DBAL\Types; use Doctrine\DBAL\Platforms\AbstractPlatform; class Currency extends Type { const CURRENCY = 'currency'; const DECIMALS = 2; public function getName() { return self::CURRENCY; } public function getSQLDeclaration(array $fieldDeclaration, […]

Doctrine Regular vs Fetch join

в доктрине, каковы различия между регулярными и выборками? Я не понимаю, просто прочитав документы . // regular $query = $em->createQuery("SELECT u FROM User u JOIN u.address a WHERE a.city = 'Berlin'"); $users = $query->getResult(); // fetch $query = $em->createQuery("SELECT u, a FROM User u JOIN u.address a WHERE a.city = 'Berlin'"); $users = $query->getResult(); Какова […]