1

(3 ответов, оставленных в Doctrine 2.x)

Точно, там уже массив... а как же быть в таком случае?

2

(3 ответов, оставленных в Doctrine 2.x)

Есть doctrine.event_listener и есть метод в нём: postLoad. Так вот, когда идет получение данных через getEntityManager, то метод срабатывает, а если через createQueryBuilder то нет... вопрос, можно ли как то заставить QueryBuilder вызывать событие postLoad ??

3

(18 ответов, оставленных в Symfony 2.0—2.2)

Ray пишет:

phpinfo()

dom

DOM/XML    enabled
DOM/XML API Version    20031129
libxml Version    2.7.8
HTML Support    enabled
XPath Support    enabled
XPointer Support    enabled
Schema Support    enabled
RelaxNG Support    enabled

4

(18 ответов, оставленных в Symfony 2.0—2.2)

relo_san пишет:

Что значит не помогло? Вы хотите сказать, что вы после записи new \DOMDocument(); получили ошибку "Class 'Test\BlogBundle\Utils\DOMDocument' not found"? Что за детский сад? Где актуальный текст ошибки, если это действительно "не помогло"?

И не надо нихуя "пробовать", вы не борщ варите, чтобы на глазок. Есть документация по языку - извольте прочитать ее перед тем, как начинать работу. Если вы не понимаете, как что-то работает, то единственный правильный путь - взять в руки документацию и осилить ее. А "пробовать" - это уровень мартышки, извините, это вам в Жумлу куда-нибудь.

Да, я хочу сказать что ошибка не изменилась, точно такая же, после  добавления \

Я тоже думаю, что это у ПХП за детский сад. актуальный текст ошибки тот же самый, выше.

документация читать нада еще знать где, тем более зачем тогда этот форум если есть документация? default/smile)

5

(18 ответов, оставленных в Symfony 2.0—2.2)

такое пробовал, не помогло default/sad

6

(18 ответов, оставленных в Symfony 2.0—2.2)

а что не так то?

7

(18 ответов, оставленных в Symfony 2.0—2.2)

namespace Test\BlogBundle\Utils;

class HtmlCutString {
  function __construct($string, $limit){
    // create dom element using the html string
    $this->tempDiv = new DOMDocument();
    $this->tempDiv->loadXML('<div>'.$string.'</div>');
    // keep the characters count till now
    $this->charCount = 0;
    $this->encoding = 'UTF-8';
    // character limit need to check
    $this->limit = $limit;

почему симфони выполняя такой код ругается:

Fatal error: Class 'Test\BlogBundle\Utils\DOMDocument' not found in /var/www/prj/src/Test/BlogBundle/Utils/HtmlCutString.php on line 11

если в консоли запускать скрипт, то обычный PHP видит же этот класс.

кстати, попробовал я сделать через createQueryBuilder, то получается те связи в маппинге что есть, приходится в ручную писать через JOIN например... тогда какой смысл в маппинге в таком случае, если всё руками делать? в Hibernate такого неудобства нет...

понял, ок

у Doctrine есть метод для поиска по критерию, с сортировкой и т.п.

findBy($criteria, $orderBy, $limit, $offset);

к примеру идет выборка сущности Advert

в которой есть такая аннотация:

    /**
     * @ORM\ManyToOne(targetEntity="Car")
     * @ORM\JoinColumn(name="car_id", referencedColumnName="id")
     *
     **/
    private $car;


можно ли как то в $orderBy указать нечто такое:


findBy($criteria, array('car.title' => 'DESC'), $limit, $offset);

но естественно будет ошибка что нет такого поля, а в сущности Car есть поле title...

это возможно ли в findBy или нужно через createQuery? default/sad((

11

(2 ответов, оставленных в Doctrine 2.x)

есть код:


        $criteria = array('cars' => $car);
        $orderBy = array();

        $adverts = $this->_em->getRepository('CarsBlogBundle:Photo')->findBy($criteria, $orderBy, $limit, $offset);

получаем ошибку:

You cannot search for the association field 'Cars\Bundle\Entity\Photo#cars', because it is the inverse side of an association. Find methods only work on owning side associations.

так как cars это arrayCollection:

    /**
     * @ORM\ManyToMany(targetEntity="Car", mappedBy="photos", cascade={"all"})
     * @Groups({"photo"})
     * @var ArrayCollection $cars;
     */
    private $cars;
   

вопрос, как в критерии можно задать чтобы искало где есть в ArrayCollection заданный $car ?

12

(2 ответов, оставленных в Doctrine 2.x)

Как мне тогда выбрать все Designs по car_id постранично, т.е. с offset и limit??

Есть сущность Car

в ней есть $designs, т.е. связь с дизайнами:

  /**
     * @ORM\ManyToMany(targetEntity="Design")
     * @ORM\JoinTable(name="Car_Design",
     *  joinColumns={@ORM\JoinColumn(name="car_id", referencedColumnName="id")},
     *  inverseJoinColumns={@ORM\JoinColumn(name="design_id", referencedColumnName="id")}
     * )
     *@Groups({"car"})
     * @var ArrayCollection $designs;
     */
   
    protected $designs;

Получается что у нас три таблицы:

Cars, Designs и Car_Design

вопрос, как можно выбрать (без SQL-запроса) а через ОРМ, постранично designs которые принадлежат какой то выбранной car_id? ведь при задании criteria в findBy я так понял я не могу никак указать "виртуальную таблицу" Car_Design для которой ведь не существует сущности.

14

(1 ответов, оставленных в Doctrine 2.x)

Добрый день. Скажите, есть ли у Doctrine не что подобное как FORMULA (такое есть к примеру в HIBERNATE). Т.е. есть вот сущность и есть связь с другой, и нужно в первой сущности посчитать кол-во других привязанных сущностей. чтобы это на уровне маппинга было.