- List item
使用场景
我们有一个article表和一张tag表,article中可以选择很多个tag。article和tag实际上是多对多的关系,在查询article信息的时候,需要带上tag信息。
1.使用模型多对多
传统做法,多对多需要使用一个中间表,数据表结构如下
使用关联查询即可获得所有数据,但是比较繁琐。
2.使用分隔符从一个字段中读取多个关联
在article中增加一个字段tags存储关联的tag,使用逗号来分隔
public function list()
{
$articles = Article::where('status', 1)->get();
$tags = Tag::pluck('name','id');
foreach ($articles as $key => $val){
foreach ($tags as $k => $v){
$arr = explode(",",$val['tags']);
if( in_array($k,$arr) ){
$articles[$key]['res'][] = $v;
}
}
}
return $articles;
}
//返回
{
"id": 1,
"title": "测试文章",
"content": "内容",
"res": {
"高端",
"真实"
}
}
3. 新增模型关联方法
详见,添加链接描述暂未做验证