在我的users表中,我有列TAGS,这是序列化数组,例如serialize(['fun','promo'])
然后在我的活动表中,我也有标签列,类似于用户表中的列。
我的问题是如何显示给用户只有那些至少有一个标签相同的活动标签。如果广告系列没有标签显示给每个用户,不管他们有什么标签。如果用户没有设置标签,则向他显示每个广告。
如何查询?
$campaign = Campaign::where('tags', $user->tags);
我知道这行不通,因为它必须在序列化数组中搜索。但是我怎么做这个查询呢?
您应该通过将标签关系存储在单独的表中来规范化数据:
campaign_tag-campaign_id-tag_id
tag_user-tag_iduser_id
Laravel文档(https://laravel.com/docs/5.2/eloquent-relationships#many-to-many)有很好的例子说明如何查询/过滤数据