我正在使用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中不具有eggs或在tag.name中但offer.description中具有的所有提议,或在两个表中柱。

有人可以帮我吗?

最佳答案

解决了:

假设我想搜索单词milk,它可以是标签,也可以在商品描述中...代码是:

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


此代码仅查找在多对多表(offer_tag)和匹配的标签或描述中至少具有关系的商品(产品)。
如果有一个offer的描述包含milk但没有标签,则该报价将被排除在查询之外。

希望可以帮助某人。

关于php - 插入两个表对“或”表进行多对多查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35399871/

10-12 05:36