首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Django进阶-6-ORM正向与反向查找

学习 django 中的 orm 的时候,可以把一对多,多对多,分为正向和反向查找两种方式。...Foreign_Key 字段在哪张表决定的, Foreign_Key字段在哪张表就可以哪张表使用 Foreign_Key字段连表,反之没有Foreign_Key 字段就使用与其关联的 小写表名; 1对多...:对象.外键.关联表字段,values(外键字段__关联表字段) 多对多:外键字段.all() ② 反向连表操作 通过value、value_list、fifter 方式反向跨表:小写表名__关联表字段...多对多:在某表中创建一行数据是,有一个可以多选的下拉框 例如:创建用户信息,需要为用户指定多个爱好 一对一:在某表中创建一行数据时,有一个单选的下拉框(下拉框中的内容被用过一次就消失了 例如:原有含10...列数据的一张表保存相关信息,经过一段时间之后,10列无法满足需求,需要为原来的表再添加5列数据

1.3K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    3分钟短文 | Laravel获取关联表指定列的3个方法

    今天我们说一说,在Laravel中,如何关联模型,以及制定返回列,以精简返回数据。 学习时间 假如有两个模型 User 和 Post,一个用户会发布多个post,也就是一对多的关联关系。...with语句 模型的with语句用于调用模型内声明的关联关系,其实它接收一个数组,可以在查询时关联多张表,同时支持一个闭包,用于对关联表的查询语句进行裁切。...}))->get(); 闭包内$query拼接SQL语句,并指定 select 选取的列,那么框架生成的SQL语句,就只会返回 id,username 列。...关联关系 我们注意到,在关联关系的声明上,第一节仅使用了 belongTo,hasMany 这样的属性,其实还可以链式调用。这样对于所有使用 with 语句关联的模型查询,都会生效。...:-( 写在最后 本文通过2种确切可用的方式,裁剪了关联模型返回列的内容。 在实际代码中,第一种使用闭包修剪SQL语句,用途较为广泛。 第二种方式影响全局,一般不推荐。

    2K20

    跟我一起学Laravel-EloquentORM进阶部分

    Phone', 'foreign_key', 'local_key'); 定义反向关系 定义上述的模型之后,就可以使用User模型获取Phone模型了,当然也可以通过Phone模型获取所属的User了,...假设有一个帖子,它有很多关联的评论信息,这种情况下应该使用一对多的关联,使用hasMany方法 <?...*/ public function users() { return $this->belongsToMany('App\User'); } } 检索中间表的列值...对多对多关系来说,引入了一个中间表,因此需要有方法能够查询到中间表的列值,比如关系确立的时间等,使用pivot属性查询中间表 $user = App\User::find(1); foreach (...关联关系查询 在Eloquent中,所有的关系都是使用函数定义的,可以在不执行关联查询的情况下获取关联的实例。

    4K50

    TP入门第十二天

    > 注意函数的定义和使用顺序的对应关系,通常来说函数的第一个参数就是前面的变量或者前一个函数调用的返回结果,如果你的变量并不是函数的第一个参数,需要使用定位符号,例如: {$create_time|date...避免js混乱:可以使用在大括号之后加入空格、使用literal、修改定界符 2、关联模型 关联关系: 一对一关联 :ONE_TO_ONE,包括HAS_ONE 和 BELONGS_TO 一对多关联 :ONE_TO_MANY...,包括HAS_MANY 和 BELONGS_TO 多对多关联 :MANY_TO_MANY 关联关系包括下面四种:HAS_ONE、BELONGS_TO、HAS_MANY和MANY_TO_MANY。...一个模型根据业务模型的复杂程度可以同时定义多个关联,不受限制,所有的关联定义都统一在模型类的 $_link成员变量里面定义,并且可以支持动态定义。...要支持关联操作,模型类必须继承RelationModel类(重要属性请参看手册进行学习研究) 具体关联的CURD操作手册中有详细的讲解,后续开发中使用到会有详细说明

    98260

    Django中ORM操作

    Foreign_Key字段在哪张表决定的, Foreign_Key字段在哪张表就可以哪张表使用Foreign_Key字段连表,反之没有Foreign_Key字段就使用与其关联的 小写表名; 1对多:对象...__关联表字段 通过对象的形式反向跨表:小写表名_set().all() 1对多 如果A表的1条记录对应B表中N条记录成立,两表之间就是1对多关系;在1对多关系中 A表就是主表,B表为子表...('UserType') 到B表(注意外键表名加引号) 就意味着 写在写A表的B表主键,(一列),代表B表的多个(一行)称为1对多, 查询 总结:利用orm获取 数据库表中多个数据 获取到的数据类型本质上都是...().first() result = obj.userinfo_set.all() [userinfo对象,userinfo对象,] 小写的表名 得到有外键关系的列 #因为使用values取值取得是字典的不是对象...') v = UserGroup.objects.values('id','title','小写的表名称__age') 小写的表名 得到有外键关系的列 v = UserGroup.objects.values_list

    4.8K10

    如何从 MongoDB 迁移到 MySQL

    也就是把所有 embeds_many 和 embeds_one 的关系都改成 has_many 和 has_one,同时将 embedded_in 都替换成 belongs_to,同时我们需要将工程中对应的测试都改成这种引用的关系...,首先是为所有的表添加 uuid 字段,同时为所有的外键例如 post_id 创建对应的 post_uuid 字段,通过 uuid 将两者关联起来: ?...除此之外,我们也需要处理一些复杂的模型关系,比如 Mongoid 中的 inverse_of 在 ActiveRecord 中叫做foreign_key 等等,这些修改其实都并不复杂,只是如果想要将这部分的代码全部处理掉...的字段添加相应的 post_uuid 列: ?...#delete_obsolete_columns 和 DatabaseTransformer#update_rename_columns 方法删除部分已有的列、更新一些数据列最后将所有的 id 列都变成

    5.4K52

    NoSQL如何构建数据存储模型

    如果我们使用列族数据库来搞的话,我们就可以调整各个列的次序了,我们可以给经常用到的列起个能够排在前面的名字,这样就可以优先的读取这些列了。...当我们使用列族来建模时,应该主要考虑的是查询需求,而不是写入需求;建模的通则就是要便于查询,而对写入操作则可以不遵循什么规范和模式,官方说法叫“反规范化”。(译者曰:记住这句其实就够了!)...你可以想象,其实有很多种建模方法;一种方法就是把 Customer 和 Order 分别存储到不同的列族中(像图 3.4)。...在这个图里我们看到, 对于所有订单的引用 都被 放在了Customer的列族中。像类似这种“反规范化”的事情是经常要做的,就为了我们查询方便。 Figure 3.4....每个node和其它的node的关系都各自独立。这些关系也有个名字,类似PURCHASED, PAID_WITH, 或者 BELONGS_TO (见图3.5);这些关系名可以让你穿越整个graph。

    1.6K130

    请在Java项目抛弃Mybatis、Hibernate,是时候上新了--ObjectiveSQL

    Java 代码与SQL 语句有机的结合,改变了传统SQL 的编程模型(以字符串拼接为主的编程模型)。...l简单的关系查询(has_one,has_many和belongs_to)和分页查询 l使用Java语法编写SQL表达式(arithmetic,comparison和logical) 为什么要选择ObjectiveSQL...l如果您的项目专注于基于关系数据库的数据分析,以及SQL语句中的许多算术表达式。...l如果您不想编写数据库访问和各种配置文件的Java代码,ObjectiveSQL的动态代码生成将帮助您无需编码即可访问数据库 性能展示 ObjectiveSQL使用例子 复杂的SQL编程 如您所见,...零编码的简单SQL编程 持久化(Persistence) 计数和查询(Counting and Quering) 关联查询(Relation Quering) 分页查询(Paged Quering

    49710

    mysql常见的建表选项和约束

    create table选项 指定列选项:default 当插入一个新行到表中并且没有给该列明确赋值时,如果定义了列的默认值,将自动得到默认值 ;如果没有,则为null。...,可以通过该表查询约束信息 常见的约束类型 not null非空,指定某列不为空(注意区分空和空格的关系) unique:唯一约束,指定某列和几列组合的数据不能重复 primary key:主键约束,指定某列的数据不能重复...,外键是构建于一个表的两个字段或者是两个表的两个字段之间的参照关系 注意: 具有外键约束的列的值不能随便给,必须满足外键所引用的主键的取值 一张表中可以定义多个外键 外键列默认可以给null值 父子表...外键所在的表叫做子表,从表 外键所引用的主键所在的表叫做父表,主表 constraint emp_deptid_fk foreign_key(deptid) references dept(deptid...1,不会覆盖原来删除的编号 列的数值自动增长,列的类型只能是整数类型 通常给主键添加自增长约束

    15610

    建议收藏——Mazur 的 SQL 风格指南

    本指南记录了我对格式化 SQL 的喜好,希望对其他人有一些用处。如果您或您的团队还没有 SQL 风格指南,那么它可以作为一个很好的起点,您可以根据自己的喜好来采用和更新它。...则推荐单行: -- 好 select * from users -- 好 select id from users -- 好 select count(*) from users 一旦你需要查询更多的列或比较复杂...列命约定 将主键放到最前面,然后是外键,最后是其他列。如果有任何系统列(如 created_at、updated_at、is_deleted 等等,把它们放到最后。...可以更容易确定连接是否导致结果呈扇形分布: -- 好 select ... from users left join charges on users.id = charges.user_id -- primary_key = foreign_key...one-to-many --> fanout select ... from charges left join users on charges.user_id = users.id -- foreign_key

    91520

    深入理解 Laravel Eloquent(三)——模型间关系(关联)

    官方英文文档中叫 Relationships,个人认为翻译成 “模型间关系” 比现在的 “关联” 更好理解一点哈哈。...一对一关系 顾名思义,这描述的是两个模型之间一对一的关系。这种关系是不需要中间表的。...---- 这里最难的地方在于后面的两个 foreign_key 和 local_key 的设置,大家可以就此记住:在 User 类中,无论 hasOne 谁,第二个参数都是 `user_id`,第三个参数一般都是...因为这里是 `hasMany`,操作的是一个对象集合。 相应的 belongsTo() 的用法跟上面一对一关系一样: <?...其他关系 Eloquent 还提供 “远层一对多关联”、“多态关联” 和 “多态的多对多关联” 这另外三种用法,经过上面的学习,我们已经掌握了 Eloquent 模型间关系的基本概念和使用方法,剩下的几种不常用的方法就留到我们用到的时候再自己探索吧

    2.7K30

    Jetpack组件之Room

    使用@Database注解的类应满足以下条件: 是扩展RoomDatabase的抽象类。 在注释中添加与数据库关联的实体列表。 包含具有0个参数且返回使用@Dao注释的类的抽象方法。...Entity:表示数据库中的表。 DAO:包含用于访问数据库的方法。 应用使用 Room 数据库来获取与该数据库关联的数据访问对象 (DAO)。...typeAffinity = ColumnInfo.INTEGER) public int id; //@ColumnInfo(name = "name"),指定该字段在表中的列的名字...需要注意的是:启用Fts的表必须使用Integer类型的主键,且列名为“rowid”。 如果表支持以多种语言显示内容,可以使用languageId指定用于存储每一行语言信息的列。...此支持在Entity的两个实例被视为相等(如果这两个实例的列包含相同的值)时尤为有用。

    1.9K20
    领券