****在實際情況中,列表可能存的是個關聯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',
]);
}
```
關聯文檔:[http://www.hmoore.net/manual/thinkphp6\_0/1037600](http://www.hmoore.net/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(['你定義的關聯名稱']),然后表格列名稱用關聯的分類字段名稱,
獲取器文檔地址:[http://www.hmoore.net/manual/thinkphp6\_0/1037588](http://www.hmoore.net/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種方式,我們可以很方便的處理模型關聯數據的展示,如果你的數據庫字段是個配置數據,也可以按第二種方式用獲取器獲取