Skip to content

关于left join 查询软删除数据表,删除条件应当在on中而不是全局 #4754

Description

@darkicerain

Go version

go1.25.3

GoFrame version

v2.10.0

Can this bug be reproduced with the latest release?

Option Yes

What did you do?

我的go 代码
`model := dao.CmsContent.Ctx(ctx).As("t")
model = model.LeftJoin("xy_cms_content_type content_type", "content_type.id = t.content_type_id")
model = model.LeftJoin("xy_cms_page_template page_template", "page_template.id = t.template_id")
model = model.LeftJoin("xy_member member", "member.id = t.author_id")
model = model.LeftJoin("xy_member created_member", "created_member.id = t.created_by ")
model = model.LeftJoin("xy_member updated_member", "updated_member.id = t.updated_by ")
model = model.Fields("t.*")
model = model.Fields("content_type.name as contentType_name")
model = model.Fields("page_template.name as template_name")
model = model.Fields("member.nickname as author_nickname")
model = model.Fields("created_member.nickname as createdBy_nickname")
model = model.Fields("updated_member.nickname as updatedBy_nickname")

var item adminin.CmsContentViewModel
err := model.Where("t.id", id).Scan(&item)`

What did you see happen?

SELECT t.*,
content_type.name as contentType_name,
page_template.name as template_name,
member.nickname as author_nickname,
created_member.nickname as createdBy_nickname,
updated_member.nickname as updatedBy_nickname
FROM "xy_cms_content" AS t
LEFT JOIN "xy_cms_content_type" content_type ON (content_type.id = t.content_type_id)
LEFT JOIN "xy_cms_page_template" page_template ON (page_template.id = t.template_id)
LEFT JOIN "xy_member" member ON (member.id = t.author_id)
LEFT JOIN "xy_member" created_member ON (created_member.id = t.created_by)
LEFT JOIN "xy_member" updated_member ON (updated_member.id = t.updated_by)
WHERE ("t"."id" = 463)
AND "t"."deleted_at" = 0
AND "member"."deleted_at" = 0
AND "created_member"."deleted_at" = 0
AND "updated_member"."deleted_at" = 0
LIMIT 1

What did you expect to see?

SELECT t.*,
content_type.name as contentType_name,
page_template.name as template_name,
member.nickname as author_nickname,
created_member.nickname as createdBy_nickname,
updated_member.nickname as updatedBy_nickname
FROM "xy_cms_content" AS t
LEFT JOIN "xy_cms_content_type" content_type ON (content_type.id = t.content_type_id)
LEFT JOIN "xy_cms_page_template" page_template ON (page_template.id = t.template_id)
LEFT JOIN "xy_member" member ON (member.id = t.author_id)
LEFT JOIN "xy_member" created_member ON (created_member.id = t.created_by AND "created_member"."deleted_at" = 0)
LEFT JOIN "xy_member" updated_member ON (updated_member.id = t.updated_by AND "updated_member"."deleted_at" = 0)
WHERE ("t"."id" = 463)
AND "t"."deleted_at" = 0
AND "member"."deleted_at" = 0
LIMIT 1

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugIt is confirmed a bug, but don't worry, we'll handle it.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions