永发信息网

thinkphp 3.1.3版本,如何关联查询出一个字段中的多个值

答案:1  悬赏:60  手机版
解决时间 2021-11-17 05:37
  • 提问者网友:趣果有间
  • 2021-11-16 18:30
thinkphp 3.1.3版本,如何关联查询出一个字段中的多个值
最佳答案
  • 五星知识达人网友:封刀令
  • 2021-11-16 19:57
亲,你的数据表是这么存的么?
A表
id tags(存放许多id值)

1 2,3,4,5
2 4,5

B表
tag name
1 小贵
2 小明
3 小红
4 小花
5 小刘
6 小猪
7 小马
8 小王
如果是这样,你可以这么查询
// 查出A表中的所有记录
$tableAList = M("A")->select();
$result = array(); // 用来存放所有记录
foreach($tableAList as $a){
$map['tag'] = array("IN",$a['tags']);

$tableBList = M("B")->where($map)->select();

$result = array_merge($result,$tableBList);

}
到这里$result 就是一个结果集了
我这个应该查询出来的是:
$result = array(
0=>array(
0=>array(tag=>2,name=>"小明"),

1=>array(tag=>3,name=>"小红"),

2=>array(tag=>4,name=>"小花"),

3=>array(tag=>5,name=>"小刘")

),
1=>array(
0=>array(tag=>4,name=>"小花"),
1=>array(tag=>5,name=>"小刘")
),

)
然后你可以对$result 进行遍历,然后组合成你想要的数据格式
希望对你有帮助!~~追问亲,您的回答对我有所启发!问题是A表还有其他字段,里面只是单一的汉字。当我想把A表select出的数组assign到模板中去一条条显示成表格。其中有一个列里面显示小明 小刘 小花等等,其他列正常显示。这个要如何写呢?
您的方法中如果只是简单两个字段,就没问题,主要是我的A表中还有其他字段。能继续帮我想想办法吗?追答嗯,那你可以这么做
比如:
A表
id tags(存放许多id值) age
1 2,3,4,5 11
2 4,5 21
B表不变
你该一下这里foreach
$tableAList = M("A")->select();

foreach($tableAList as $key=>$a){
$map['tag'] = array("IN",$a['tags']);

$tableBList = M("B")->where($map)->select();

$a['bcontent'] = $tableBList;
$tableAList[$key] = $a;
}
这样tableAList 中的每一个 A记录数组中都会多一个bcontent 字段 指向的是 B表中数据的数组!
然后你在根据这个去构建自己的数据结构,或者直接将tableAList assign 到前端,去进行输出!
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯