🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
上面将代码生成之后基础菜单以及功能已经建立,下面针对文章,文章分类进行细化,代码生成器重点是基础搭建,需要配合业务进行处理 ![](https://img.kancloud.cn/6c/09/6c09aea82fbc1295972c9b17a1ec2e30_1920x881.png) ![](https://img.kancloud.cn/6e/25/6e25346c69e9465b3541bcaa3b2c7f20_1918x896.png) 针对关联数据模型目前代码生成器尚未完成,需要手动开发,下面说明一下文章关联文章分类开发细节 #### **首先文章列表里面文章分类属于选择框,由于无法动态查询数据,先要配置文章分类属于下拉框,下拉选择一个数据字典(具体不做要求)。** ![](https://img.kancloud.cn/97/71/9771a09776c85c86e6a468a4c5fee5c8_1920x1020.png) 做好文章分类的关联模型,关联之后系统model层会生成一对一关联的方法 ![](https://img.kancloud.cn/f7/89/f789a9a7e34e85e237adc78c08e80aed_1902x724.png) ``` public function articleCategory() { return $this->hasOne(\addon\lgs_cms\app\model\article\ArticleCategory::class, 'category_id', 'category_id'); } ``` 查看文章列表,文章分类的搜索,显示的是数据字典对应的数据 ![](https://img.kancloud.cn/62/89/62896f3903f18f740bb439860d51dde5_1920x799.png) 下面针对这里的数据进行修改 后台接口实现对应方法,包括service书写方法,控制器调用,路由定义 ![](https://img.kancloud.cn/87/1b/871b02108f94219ee059cfc1c553a243_1920x634.png) ![](https://img.kancloud.cn/6a/f7/6af73fac7ca004108300ec6f9d12d9a5_1919x937.png) ![](https://img.kancloud.cn/d1/0d/d10d0ee474bef1739c64e7842d727b26_1920x946.png) 这样article.ts以及article.vue就可以调用了,注意调用数据格式 ![](https://img.kancloud.cn/a6/96/a696da9b5f42779b0ebbacfe78ff82de_1862x872.png) ![](https://img.kancloud.cn/d9/6a/d96af59d7f416ec9ef95bc836a8a3a27_1879x874.png) ![](https://img.kancloud.cn/c3/f6/c3f63abd47cdef96d2f6bb3948b20949_1920x946.png) **文章列表中查询对应文章分类的数据需要专门的关联查询 首先ArticleService要在分页列表中进行查询,使用with方法,具体书写方法查看thinkphp手册** ![](https://img.kancloud.cn/8a/e7/8ae782827dab3a7a8f90e71d9eff0bd9_1920x935.png) ``` public function getPage(array $where = []) { $field = 'id,category_id,site_id,title,intro,summary,image,author,content,visit,visit_virtual,is_show,sort,create_time,update_time,delete_time'; $order = ''; $search_model = $this->model->where([['site_id', '=', $this->site_id]])->withSearch(["category_id","title","create_time"], $where) ->with([ "article_category" => function($query){ $query->field("category_id, name"); }, ]) ->field($field)->order($order); $list = $this->pageQuery($search_model); return $list; } ``` 其次是article.vue页面中展示文章分类,注意数据结构,返回列表是对应list下面article_category下的name ![](https://img.kancloud.cn/9f/a7/9fa701cb161f5130493dd9a5ab9ef598_1909x813.png) 文章的添加与编辑同样按照上述方法 ![](https://img.kancloud.cn/ec/ef/ecef2baec38677376f7be15ff588b258_1920x1012.png) ![](https://img.kancloud.cn/97/fd/97fd4b45b7962fd0ed6b3dbe238cadf5_1920x997.png) ![](https://img.kancloud.cn/88/4d/884d30f04612c29a6779874d28bfc6ca_1920x963.png) 实现结果如图 ![](https://img.kancloud.cn/26/00/26004a00af5e9710e12aeab4359fc743_1920x945.png) ![](https://img.kancloud.cn/ec/b9/ecb9adc656780ef507a0fccdacd0fd2b_1920x778.png) ![](https://img.kancloud.cn/c3/d0/c3d05b7fa2be7e8922744607323db5b0_1920x802.png)