首页 > 其他分享 >Gorm使用的一些经验--如何彻底删除一条数据

Gorm使用的一些经验--如何彻底删除一条数据

时间:2023-06-02 22:12:48浏览次数:28  
标签:Name 删除 -- global DB result brands Gorm

中文文档:https://gorm.io/zh_CN/

我们知道,在使用gorm的时候,如果我们使用了gorm内置的model,会存在一个delete_at字段,当我们删除一条数据,这条数据并不会在数据库中被彻底删除

举个例子:

  数据库中的数据如下:

   现在通过实现的接口,去删除id=402的数据,在这里因为我设计的接口原因,请求参数限制为Name与Logo字段,所以通过Name去调grpc端的接口来删除该条数据

func DeleteBrandTest() {
	_, err := brandClient.DeleteBrand(context.Background(), &proto.BrandRequest{
		Name: "品牌198",
	})
	if err != nil {
		panic(err)
	}
	fmt.Println("删除成功")

}

接口代码:

func (s *GoodsServer) DeleteBrand(ctx context.Context, req *proto.BrandRequest) (*emptypb.Empty, error) {
	//if result := global.DB.Delete(&model.Brands{Name: req.Name}); result.RowsAffected == 0 {
	//	return nil, status.Errorf(codes.NotFound, "该品牌不存在")
	//}
	var brands model.Brands
	result := global.DB.Where(&model.Brands{Name: req.Name}).First(&brands)
	if result.RowsAffected == 0 {
		return nil, status.Errorf(codes.NotFound, "该品牌不存在")
	}
	fmt.Println(brands.ID)

	global.DB.Unscoped().Delete(&brands)
	return &emptypb.Empty{}, nil
}

这段代码的逻辑是,首先在数据库中查询匹配的数据,若查询不到,则返回提示消息;然后最重要的部分来了,主要看这段代码global.DB.Unscoped().Delete(&brands)

这条语句实现了硬删除的功能!

 

标签:Name,删除,--,global,DB,result,brands,Gorm
From: https://www.cnblogs.com/99kol/p/17452987.html

相关文章

  • K8S的知识图谱
    知识图谱K8S架构K8S结构......
  • 5.19 面向对象案例分析一
    classAddress{privateStringcountry;privateStringprovince;privateStringcity;privateStringstreet;privateStringzipcode;publicAddress(){}publicAddress(Stringcountry,Stringprovince,Stringcity,Stringstr......
  • .net core IOC容器实现(一) -- ServiceDescriptor
    IOC容器内保存的程序运行过程中使用的服务实例。那么如果有些服务实例需要在运行时动态生成,比如,数据库连接,不可能在程序运行过程中所有线程共用一条数据库连接。所以IOC容器内保存的不是具体的服务实例,而是服务的相关信息,使用这个信息可以在程序运行时动态的生成服务实例,这些信......
  • 一首无名诗
    盛夏星辰三两风,扶我十万八千梦。天晴月空云消散,人间妙龄长相守。这首诗通过描写美好的自然景象,表达了对爱情的向往和执着。首先,诗标题“盛夏星辰三两风”给人一种热情洋溢的感觉,正如爱情初现的激情四射。“三两风”也含有轻柔怜爱的意味,与“扶我十万八千梦”的表述相呼应......
  • 树状数组详解——本质上就是空间换时间,可以解决大部分基于区间上的更新以及求和问题
     943.区间和查询-Immutable 中文 English 给一个整数数组nums,求出下标从i到j的元素和(i≤j),i跟j对应的元素也包括在内。 样例样例1输入:nums=[-2,0,3,-5,2,-1]sumRange(0,2)sumRange(2,5)sumRange(0,5)输出:1-1-3解释:sumRange(0,2)->(-2......
  • 浅谈僵尸网络利器:Fast-flux技术——只是一些特定的apt组织才使用,倒是很少在恶意软件的
    DynamicResolution: FastFluxDNSOthersub-techniquesofDynamicResolution(3)AdversariesmayuseFastFluxDNStohideacommandandcontrolchannelbehindanarrayofrapidlychangingIPaddresseslinkedtoasingledomainresolution.Thistechniqueus......
  • 2023年6月2日,ArrayList
    1.ArrayListpackagecom.wz.arraylist_class;importjava.util.*;publicclasstest02{/***知识点:集合中可以存储不同类型的元素*泛型*@paramargs**/publicstaticvoidmain(String[]args){ArrayList<String>list......
  • 圈复杂度本质上就是——分支覆盖率达到100%需要的测试用例数
     圈复杂度主要与分支语句(if、else、,switch等)的个数成正相关。如下代码:  1.publicStringcase2(intindex,Stringstring){2.null;3.if(index<0){4.thrownewIndexOutOfBoundsException("exception<0");5.}6.if(index==1){......
  • 最小哈希 minhash
    最小哈希维基百科,自由的百科全书 在计算机科学领域,最小哈希(或最小哈希式独立排列局部性敏感哈希)方法是一种快速判断两个集合是否相似的技术。这种方法是由AndreiBroder (1997),[1]发明的,最初在AltaVista搜索引擎中用于在搜索结果中检测并消除重复Web页面。[2]它同样也应用于大规模......
  • AI入门(重实践)书籍推荐
    AI书籍推荐我最近看了下https://book.douban.com/subject/30147778/ 另外如果要看电子书的话建议看这个https://book.douban.com/subject/27154347/评价也非常高从项目着手机器学习和深度学习都有并且难度也不高其中文翻译电子版可以看这里https://github.com/it-ebooks......