****在实际情况中,列表可能存的是个关联id,比如新闻表的存储的分类,是cate_id,此时列表直接显示cate_id肯定是不合适的,需要显示分类的名称,那么如何处理呢?
## 第一种方法:
模型一对一关联,然后设置bind字段,然后在控制器ajaxSearch里面增加->with(['你定义的关联名称']),然后表格列名称用关联的分类字段名称,
demo如下:
- 模型:
```
/**
* 获取分类
* @return BelongsTo
*/
public function cate(): BelongsTo
{
return $this->belongsTo(NewsCate::class, 'cate_id', 'id');
}
public function cateBind()
{
return $this->store()->bind([
'cate_name' => 'name',
]);
}
```
关联文档:[https://www.kancloud.cn/manual/thinkphp6\_0/1037600](https://www.kancloud.cn/manual/thinkphp6_0/1037600)
- 控制器
```
private function ajaxSearch()
{
/** @var NewsModel $model */
$model = $this->getManageModel();
$model = $model::where(1, 1)->with(['cateBind']); //增加此项
$rs = $this->parseSearchWhere($model);
return json_return($rs);
}
```
- 表格
```
public function header()
{
return [
'cate_name' => '分类',//使用bind的字段
];
}
```
## 第一种方法:
通过模型获取器,然后设置自定义字段,然后在控制器ajaxSearch里面增加->append(['你定义的关联名称']),然后表格列名称用关联的分类字段名称,
获取器文档地址:[https://www.kancloud.cn/manual/thinkphp6\_0/1037588](https://www.kancloud.cn/manual/thinkphp6_0/1037588)
- 模型:
```
public function getCateNameAttr()
{
//业务代码自行实现
return '分类名称';
}
```
- 控制器
```
private function ajaxSearch()
{
$model = $this->getManageModel();
$rs = $this->parseSearchWhere($model, [
'title' => 'like',
])->append(['cate_name']);
return json_return($rs);
}
```
- 表格同上
通过上面2种方式,我们可以很方便的处理模型关联数据的展示,如果你的数据库字段是个配置数据,也可以按第二种方式用获取器获取