后台php设置连表之后,用类似于所属分类查询,会有id不明确的情况

language 复制代码
    /**
     * @var object
     * @phpstan-var UserMoneyLog
     */
    protected object $model;

    protected array $withJoinTable = ['user'];

    // 排除字段
    protected string|array $preExcludeFields = ['create_time'];

    protected string|array $quickSearchField = ['user.username', 'user.nickname'];

    public function initialize(): void
    {
        parent::initialize();
        $this->model = new UserMoneyLog();
    }

譬如说以上的余额日志,假如要用去查询,会报错Integrity constraint violation: 1052 Column 'id' in where clause is ambiguous
/admin/user.MoneyLog/index?isTree=true&uuid=_38878286911721647671442&page=1&initKey=id&initValue=5&select=true&quickSearch=

打印sql看了一下,是where的id没有指定是哪张表的,有解决方案不?

使用方式类似于这样

1个回答默认排序 投票数排序
YANG001
YANG001
这家伙很懒,什么也没写~
4月前

将远程下拉组件的pk: 'id'改为pk: '模型名称.id',其中模型名称指模型类的名称,不含目录路径

seanpan
seanpan回复YANG001
这家伙很懒,什么也没写~
4月前

不太行,这样子查询,数据列表全部为空了

看了一下sql语句,这样子就只查询 商户分类等于13的商户了,而不是商户列表,这个方案不行

SELECT shop.*,category.idAScategory__id,category.pidAScategory__pid,category.nameAScategory__name,category.imageAScategory__image,category.remarkAScategory__remark,category.statusAScategory__status,category.background_imageAScategory__background_image,category.weighAScategory__weigh,category.create_timeAScategory__create_time,category.update_timeAScategory__update_time,category.delete_timeAScategory__delete_timeFROMjy_mall_shop shopLEFT JOINjy_category categoryONshop.category_id=category.idWHERE ( category.id= '13' ) ANDshop.delete_time= '0' ORDER BYweigh DESC

YANG001
YANG001回复seanpan
这家伙很懒,什么也没写~
4月前

这里指定的是 pk 对应的字段,避免模棱两可的字段名,和 13、列表什么的无关

lande
lande回复YANG001
这家伙很懒,什么也没写~
3月前

有个疑问?为啥不在queryBuilder()方法中增加一个判断,如果是连表,那么查询的时候就自动在pk上加上表别名呢?

YANG001
YANG001回复lande
这家伙很懒,什么也没写~
3月前

那么你的pk是使用了那个表的id字段呢?

lande
lande回复YANG001
这家伙很懒,什么也没写~
3月前

可以默认是主表的,我看是有主表别名的

YANG001
YANG001回复lande
这家伙很懒,什么也没写~
3月前

多表关联呢,有时候不是只有一个关联表

请先登录
0
1
1
7