推动如何进行多对多查询" OR"两张桌子

时间:2016-02-15 00:44:18

标签: php mysql sql orm propel

我使用推进ORM并有两个表:

offer
    id | description | ....
tag
    id | Name | ....
offer_tag
    offerid | tagid 

其中offer_tag是两个多表,两列都与各个表ID主键相关。

我的目标是通过PROPEL创建一个查询,搜索可能是或在offer.description或tag.name中的word。 也就是说:如果我搜索eggs,我可以收到所有在offer.description中有eggs但不在tag.name中或在tag.name但在商品中有eggs的商品。描述,或在两个表格列中。

有人可以帮我吗?

1 个答案:

答案 0 :(得分:0)

解决:

假设我想搜索单词milk,可以是标签,或者在商品(产品)描述中......代码是:

$of = OfferQuery::create()
                  ->where('Offer.Description LIKE ? %milk%')
                  ->or()
                     ->useOfferTagQuery()
                        ->useTagQuery()
                            ->filterByName('milk')
                        ->endUse()
                    ->endUse();
                  ->find();

此代码仅查找在多对多表(offer_tag)和匹配标记或描述中至少具有关系的商品(产品)。 如果offer的描述中包含milk但没有标记,则此优惠将从查询中排除。

希望可以帮助别人。