返回顶部
首页 > 资讯 > 后端开发 > GO >Gorm 中的 Preload 函数有什么作用?
  • 845
分享到

Gorm 中的 Preload 函数有什么作用?

2024-04-04 23:04:47 845人浏览 独家记忆
摘要

golang小白一枚,正在不断学习积累知识,现将学习到的知识记录一下,也是将我的所得分享给大家!而今天这篇文章《GORM 中的 Preload 函数有什么作用?》带大家来了解一下##content_

golang小白一枚,正在不断学习积累知识,现将学习到的知识记录一下,也是将我的所得分享给大家!而今天这篇文章《GORM 中的 Preload 函数有什么作用?》带大家来了解一下##content_title##,希望对大家的知识积累有所帮助,从而弥补自己的不足,助力实战开发


问题内容

链接Http://Gorm.io/docs/preload.html讨论了gorm中的预加载,但我无法理解这个函数的作用。

type User struct {
  gorm.Model
  Username string
  Orders Order
}
type Order struct {
  gorm.Model
  UserID uint
  Price float64
}


db.Preload("Username")

db.Preload("Orders").Find(&users)

有人能解释一下这两个语句的作用吗?输出是什么?

难道是用preload缓存结果的?


解决方案


您提供的链接显示了它的作用。您只需实际阅读页面上的信息即可。

首先,这并没有真正做任何事情:

db.preload("username")

另一方面,以下内容:

db.preload("orders").find(&users)

确实做了一些事情。首先,它填充 users,然后填充 []user.orders。在您链接的页面上的评论中,您会发现这一点,其中显示了它通过查询执行的操作:

db.preload("orders").find(&users)
//// select * from users;
//// select * from orders where user_id in (1,2,3,4);

那么这到底有什么作用呢?我可以为您提供技术答案,您可以通过谷歌搜索热切加载轻松找到该答案,或者我可以通过我认为更简单的示例为您提供答案。

让我通过示例来解释这一点。

假设您有用户,每个用户可以有多个订单。这是一对多的关系,可以这样定义:

type user struct {
  gorm.model
  username string
  orders []order
}

当您填充 users 切片时,如下所示:

db.find(&users)
//// select * from users;

如果您需要获取每个用户的所有订单,您可以轻松访问 user.orders 但无论如何它都是空的,因为它没有被填充。

如果我们像这样填充 users 切片:

db.preload("orders").find(&users)

user.orders 将由该用户的订单填充。这是一个使处理关系变得更容易的抽象。

丑陋的替代方案是:

db.find(&users)

for user := range users {
  db.where("user_id", user.id).find(&user.orders)
}

它还会向数据库发出不必要的更多请求。 (这不好)

如果您的用户有帖子、评论和订单,那么您可以像这样定义和查询它:

type User struct {
  gorm.Model
  Username string
  Orders []Order
  Comments []Comment
  Posts []Post
}

db.Preload("Orders").Preload("Comments").Preload("Posts").Find(&users)

只需上面的代码,您现在就可以访问数据库中不同表中的用户数据。

希望对您有所帮助。

理论要掌握,实操不能落!以上关于《Gorm 中的 Preload 函数有什么作用?》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注编程网公众号吧!

您可能感兴趣的文档:

--结束END--

本文标题: Gorm 中的 Preload 函数有什么作用?

本文链接: https://lsjlt.com/news/596121.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Gorm 中的 Preload 函数有什么作用?
    Golang小白一枚,正在不断学习积累知识,现将学习到的知识记录一下,也是将我的所得分享给大家!而今天这篇文章《Gorm 中的 Preload 函数有什么作用?》带大家来了解一下##content_...
    99+
    2024-04-04
  • python中的函数有什么作用
    本篇内容介绍了“python中的函数有什么作用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、函数的价值主要体现在调用时,而非定义时。调用...
    99+
    2023-06-30
  • python中函数有什么作用
    python中函数有什么作用?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。python的数据类型有哪些python的数据类型:1. 数字类型,包括int(整型)、long(长整...
    99+
    2023-06-14
  • html5中preload的概念是什么
    本篇内容介绍了“html5中preload的概念是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2024-04-02
  • oracle中的trim函数有什么作用
    在Oracle中,TRIM函数的作用是用来去除字符串开头和结尾的指定字符(默认是空格)。可以指定要去除的字符,也可以不指定,这样就会...
    99+
    2024-04-09
    oracle
  • c++中的accumulate函数有什么作用
    在C++中,accumulate函数用于计算容器中元素的累加值。它接受三个参数:容器的起始迭代器、容器的结束迭代器以及一个初始值。 ...
    99+
    2024-04-02
  • php中的mysql_connect函数有什么作用
    在PHP中,mysql_connect()函数用于建立与MySQL数据库服务器的连接 mysql_connect()函数的语法如下:...
    99+
    2024-05-13
    php
  • mysql中的tonumber函数有什么作用
    在MySQL中,并没有内置的tonumber函数。通常,MySQL中的数据类型会根据存储的数据自动转换为适当的类型,例如将字符串转换...
    99+
    2024-05-13
    mysql
  • pgsql中的nullif函数有什么作用
    在 PostgreSQL 中,nullif 函数用于比较两个表达式的值。如果这两个表达式的值相等,则返回 NULL 值;否则返回第一...
    99+
    2024-05-14
    pgsql
  • sql中的distinct函数有什么作用
    在 SQL 中,DISTINCT 函数的作用是从查询结果中删除重复的记录,只保留唯一的记录 DISTINCT 可以应用于单个列或多个...
    99+
    2024-05-14
    sql
  • PostgreSQL中mdread函数有什么作用
    本篇内容主要讲解“PostgreSQL中mdread函数有什么作用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“PostgreSQL中mdread函数有什么作用...
    99+
    2024-04-02
  • PostgreSQL中fsm_search函数有什么作用
    本篇内容介绍了“PostgreSQL中fsm_search函数有什么作用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能...
    99+
    2024-04-02
  • PostgreSQL中hash_search_with_hash_value函数有什么作用
    本篇内容主要讲解“PostgreSQL中hash_search_with_hash_value函数有什么作用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Pos...
    99+
    2024-04-02
  • PostgreSQL中RelationGetBufferForTuple函数有什么作用
    这篇文章主要讲解了“PostgreSQL中RelationGetBufferForTuple函数有什么作用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Po...
    99+
    2024-04-02
  • PostgreSQL中BufferAlloc函数有什么作用
    这篇文章主要介绍“PostgreSQL中BufferAlloc函数有什么作用”,在日常操作中,相信很多人在PostgreSQL中BufferAlloc函数有什么作用问题上存在疑惑,小编查阅了各式资料,整理出...
    99+
    2024-04-02
  • PostgreSQL中StrategyGetBuffer函数有什么作用
    本篇内容介绍了“PostgreSQL中StrategyGetBuffer函数有什么作用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大...
    99+
    2024-04-02
  • PostgreSQL中BufTableInsert函数有什么作用
    本篇内容介绍了“PostgreSQL中BufTableInsert函数有什么作用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细...
    99+
    2024-04-02
  • PostgreSQL中ReadBuffer_common函数有什么作用
    这篇文章主要介绍“PostgreSQL中ReadBuffer_common函数有什么作用”,在日常操作中,相信很多人在PostgreSQL中ReadBuffer_common函数有什么作用问题上存在疑惑,小...
    99+
    2024-04-02
  • PostgreSQL中create_index_path函数有什么作用
    本篇内容主要讲解“PostgreSQL中create_index_path函数有什么作用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“PostgreSQL中cr...
    99+
    2024-04-02
  • PostgreSQL中set_base_rel_pathlists函数有什么作用
    这篇文章主要介绍“PostgreSQL中set_base_rel_pathlists函数有什么作用”,在日常操作中,相信很多人在PostgreSQL中set_base_rel_pathlists函数有什么作...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作