laravel 多对多,查询分类下所有子分类的所有文章
分类和文章属于多对多关系,通过中间表联合。article、category、article_category三个表。
分类有父子分类。
例如婚姻>结婚>结婚证,
而文章若属于婚姻,怎么查询属于婚姻分类下的所有子分类下的文章呢?
请教,谢谢!
先把分类的id 查出来,然后再 whereIn ?常规做法就是这样了。
你的表设计的有问题,不要中间表,
article
表里面有两个字段,分类
和所有分类
,比如按你说的关系,那么你有一篇文章属于
结婚证
,那么
分类
这个字段里面就存储结婚证
,然后在所有分类里存储结婚证,结婚,婚姻
,逗号分隔,把所有父级的分类存储起来,查询的时候可以用
MySQL
函数FIND_IN_SET
也可以存储的时候
,结婚证,结婚,婚姻,
,查询的时候LIKE %,结婚,%
我的逗号都是中文你可以替换一下英文的。
多对多关系,建立中间表article_category,并在表中定义article_id和category_id为该表的外键,外键与另外2张表一一对应。创建多对多方法,$this->belongsToMany(关联的模型类名, 中间表表名,当前模型在中间模型中的外键名称, 关联模型在中间模型的外键名称),在控制器中调该方法就可以查询出你想要的数据了