关于left join 查询软删除数据表,删除条件应当在on中而不是全局
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
Source: gogf/gf