簡體   English   中英

教義:我如何讓多對多關系的所有參與者

[英]Doctrine: How could I get all participants of many-to-many relationships

我有3個表格:[“ Order”,“ Order_to_goods”,“ Goods”]

我想通過Order_ID來獲得多對多關系的所有參與者,以執行類似的操作:

$Order = Doctrine::getTable('Order')->findOneById( 1 );
$Order ->loadReleated('Goods');

foreach( $Order->Goods as $product){...}

但這是行不通的。 嘗試過我絕望的一切。 你能給我一些有用的建議嗎?

加成

要獲取嵌套值,需要執行一些操作:

    $this->orderObject->loadReference('StoreOrderToItem');
    foreach($this->orderObject->StoreOrderToItem as $OrderToItem)
    {
        $OrderToItem->loadReference('StoreItem');
    }

很少查詢數據庫,以獲取完整的對象:

SELECT s.order_id AS s__order_id, s.goods_id AS s__goods_id, s.count AS s__count, s.price AS s__price FROM store_order_to_item s WHERE (s.order_id IN (?))

SELECT s.id AS s__id, s.section_id AS s__section_id, s.payment_strategy_id AS s__payment_strategy_id, s.name AS s__name, s.title AS s__title, s.description AS s__description, s.price AS s__price, s.creation_date AS s__creation_date, s.status AS s__status, s.sort AS s__sort FROM store_item s WHERE (s.id = ?)

SELECT s.id AS s__id, s.section_id AS s__section_id, s.payment_strategy_id AS s__payment_strategy_id, s.name AS s__name, s.title AS s__title, s.description AS s__description, s.price AS s__price, s.creation_date AS s__creation_date, s.status AS s__status, s.sort AS s__sort FROM store_item s WHERE (s.id = ?)

如果數據庫中不僅只有一兩行,而是有數千行,該怎么辦? 必須將所有查詢合並在一起(使用LEFT JOIN操作數)。 如果所有關系都正確,該怎么辦? Doctrine文檔未能為我透露此問題。 我希望你能幫助我。

PS:對不起,我的英語,我是在30分鍾以上寫的=))

我找到了解決方案:

    $q = $this->createQuery('dctrn_findProduct')
            ->from('JV_Model_StoreOrder o')
            ->leftJoin('o.StoreOrderToItem oi WITH oi.order_id = o.id')
            ->leftJoin('oi.StoreItem i WITH i.id = oi.goods_id')
            ->addWhere('o.id = ?', $order_id);

    $r = $q->execute(array(), Doctrine_Core::HYDRATE_ARRAY);

他不充當mysql,使用的不是簡單的SQL查詢。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM