我正在使用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/