У меня есть ожидающий проект с электронной коммерцией Sonata, и я должен понять, как он работает. Я хочу управлять изменением продукта в Doctrine / mongoDB, оставляя все остальные данные в Doctrine / MySQL.
Поэтому я установил песочницу с демо-частью и проследил.
Это привело меня к ORM \ Persiters \ BasicEntityPersister, в котором есть метод getSelectSQL ().
При редактировании, например, туристического продукта http://mysite/app_dev.php/admin/sonata/product/product/526/edit
переменная $ conditionSql получила следующее условие sql:
t0.id =? AND t0.product_type IN (‘sonata.ecommerce_demo.product.travel’)
Когда я вывести метод getSelectConditionSQL () до возврата, я имею
t0.id =?
Итак, вопрос: где находится AND t0.product_type IN ('sonata.ecommerce_demo.product.travel')
сгенерированная часть, и, самое главное, откуда берется оператор IN ()?
Я действительно должен знать, потому что, когда я пытаюсь поместить Документ в качестве параметра,
<service id="sonata.ecommerce_demo.product.travel.manager" class="Sonata\ProductBundle\Document\ProductManager">
<argument>Application\Sonata\ProductBundle\Document\Travel</argument>
<argument type="service" id="doctrine_mongodb" />
</service>
Я заканчиваю с пустым оператором IN ().
Спасибо за любую помощь …
Задача ещё не решена.
Других решений пока нет …