在我的用户表中,我有列TAGS,即序列化数组,例如。序列化([ '乐趣', '促销'])
然后在我的Campaign表中,我还有一个类似于users表中列的标签列。
我的问题是如何仅向用户显示至少有一个与广告系列代码相同的广告代码的广告系列。如果广告系列没有向每个用户显示标签,则不会显示他们拥有的标签。 如果用户没有标签设置显示每个广告系列。
如何查询?
$campaign = Campaign::where('tags', $user->tags);
这不起作用我知道因为它必须在序列化数组中搜索。 但是我该怎么做呢?
答案 0 :(得分:4)
您应该通过将标记关系存储在单独的表中来规范化数据:
campaign_tag -campaign_id -tag_id
tag_user -tag_id -user_id
Laravel文档(https://laravel.com/docs/5.2/eloquent-relationships#many-to-many)提供了如何查询/过滤数据的很好示例。