webman 一键curd 当数据表主键不是id,文章关联文章的分类无法传值

marcoxiong

问题描述

webman 一键curd 出来的程序有bug
我有两个表
文章分类表 category 主键是 category_id
文章内容表 article 主键是article_id 关联的分类id字段是 category_id

我在文章内容的表单属性,使用下拉单选进行关联

程序代码或配置

url:/app/admin/category/select?format=select

重现问题的步骤

生成的表单,可以读取到文章的分类,也可以选择
但是无法保存
我保存抓包查看network category_id的值是空的
我在想是不是因为 文章分类的主键 是category_id 不是id 的缘故?
请问我该怎么解决这个问题

操作系统环境及workerman/webman等具体版本

这里写具体的系统环境相关信息
运行 MacOs
"workerman/webman-framework": "^1.5.0",
"monolog/monolog": "^2.0",
"webman/admin": "^0.6.28"

328 2 1
2个回答

marcoxiong

已证实关联的分类id字段必须为"id",如果为别的自定义主键,则不能正常使用该功能,请问应该怎么修改,才能支持自定义的主键名?

  • 暂无评论
walkor 打赏

plugin/admin/app/controller/Crud.php
formatSelect方法改成下面这样试下

    /**
     * 格式化下拉列表
     * @param $items
     * @return Response
     */
    protected function formatSelect($items): Response
    {
        $formatted_items = [];
        $primary_key = $this->model->getKeyName();
        foreach ($items as $item) {
            $formatted_items[] = [
                'name' => $item->title ?? $item->name,
                'value' => $item->$primary_key
            ];
        }
        return  $this->json(0, 'ok', $formatted_items);
    }
  • marcoxiong 2024-07-23

    还是不行,我打印了 primary_key的值,还是id,没有改成 主键所在的key ,会不会webman对数据表有缓存?

  • walkor 2024-07-23

    primary_key 读取的是生成model文件里的值

  • marcoxiong 2024-07-23

    感谢大佬,我重新生成category 后,正常了

×
🔝