tp5框架中 public function getkefanglist(){ $list=Db::name("kefang") ->field(['id','name','area','bed_size','price', 'kefangtag_ids','smallimage','hotel_limages','kefangother_ids']) ->where('status',1) ->select(); }这个方法查到的list中的kefangtag_ids是以字符串1,2,3这样存在,需要拿它去跟kefang_tag表中的id字段进行查询,查询到的tagname需要插入到每个$list中,应该怎么写
时间: 2024-01-01 16:04:07 浏览: 75
您可以使用`join`方法来连接`kefang`表和`kefang_tag`表,并通过`GROUP_CONCAT`和`FIND_IN_SET`函数来获取`kefangtag_ids`对应的标签名称。以下是您可以尝试的代码示例:
```php
public function getkefanglist(){
$list = Db::name("kefang")
->field(['kefang.id','name','area','bed_size','price',
'GROUP_CONCAT(tagname) as tag_names','smallimage','hotel_limages','kefangother_ids'])
->join('kefang_tag', 'FIND_IN_SET(kefang_tag.id, kefang.kefangtag_ids)')
->where('status', 1)
->group('kefang.id')
->select();
return $list;
}
```
在上面的示例中,我们使用`join`方法连接了`kefang`表和`kefang_tag`表。然后,我们使用`FIND_IN_SET`函数来匹配`kefangtag_ids`中的标签ID。使用`GROUP_CONCAT`函数将匹配到的标签名称连接成一个字符串,并将其作为别名`tag_names`返回。最后,我们通过`group`方法对结果进行分组,确保每个`kefang`记录只出现一次。
现在,查询到的`$list`中的每个记录都包含了对应的标签名称,可以直接使用。
请注意,以上代码仅提供了一种实现方式,您可以根据实际需求进行调整和优化。
阅读全文