🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
****在实际情况中,列表可能存的是个关联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种方式,我们可以很方便的处理模型关联数据的展示,如果你的数据库字段是个配置数据,也可以按第二种方式用获取器获取