0

Sonata e コマースの保留中のプロジェクトがあり、それがどのように機能するかを理解する必要があります。Doctrine/MySQL に他のすべてのデータを残して、Doctrine/mongoDB で製品のバリエーションを管理したいと考えています。ということで、デモパーツでサンドボックスをインストールしてトレースしてみました。

これにより、getSelectSQL() メソッドを持つ ORM\Persiters\BasicEntityPersister にたどり着きました。

たとえば、旅行商品を編集する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() ステートメントになってしまいます。

助けてくれてありがとう…</p>

4

0 に答える 0