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

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操作手册中有详细讲解,后续开发中使用到会有详细说明

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

Rails框架流行在他设计理念

文件就放在models目录里,controller,view,helper分别放在特定名称目录里,只要你按这个规则做了,那一切很简单,如果你较真抬杠非不这么放,那么也许能达到目标,但很累。...2、O/R Mapping: NHibernate,IbatisNet等ORM架构都有至少有一个记录OR映射关系配置文件,然而Rails框架没有,它使用Scaffold生成model,默认情况下就是英文复数表名对应单数...这样开发者就不用为了“可能”存在灵活性维护一个大OR Mapping配置了。这样简单事情容易了。...不是在运行时执行基于反射映射,而是直接生成和编译数据访问层。...这么多工具包,就是没有一个完整包装框架,最完整框架算是CastleMonoRail框架,借助Castle4年来积累,还在继续前行,微软要推出asp.net mvc打断了MonoRail项目的开发步伐

1.9K50

REST API URI 设计七准则

REST API 不应该期望有一个尾部斜杠,并且不应该将它们包含在它们提供给客户端链接中。...为避免这种混淆,请使用连字符( - )不是下划线 规则#5:URI 路径中首选小写字母 方便的话,URI 路径中首选小写字母,因为大写字母有时会导致问题。...为了实现简单链接和调试便捷,REST API 也可以通过查询参数来支持媒体类型选择。 规则#7:端点名称单数还是复数? 这里采用保持简单原则。...虽然你语法常识会告诉你使用复数来描述资源单个实例是错误,但实际答案是保持 URI 格式一致并且始终使用复数形式。...URI 名称和结构应该向消费者传达意义。通过遵循上述规则,你将创建一个更加清晰 REST API。这不是一个 REST 规则或约束,而是增强了 API。

1.3K40

Rust Web 生态观察| SeaORM :要做 Rust 版本 ActiveRecord

并且,Diesel 并不是 ActiveRecord Rust 复刻版。...“Active Record ,是一种领域模型模式,特点是一个模型类对应关系型数据库中一个表,模型一个实例对应表中一行记录。...它并不是 Ruby on Rails 首创,而是由 Martin Fowler 《企业应用架构模式》一书中提出。...Rails Active Record ORM 框架,和 Rails 框架一样,遵循是「约定大于配置」惯例。比如 : User 模型,对应是 users 表。遵循单复数约定。...Rails ActiveModel 还提供一些模型验证等丰富功能,目前 SeaORM 中 ActiveModel 抽象也正在完善相关功能,参见 PR: Update `ActiveModelBehavior

9.9K20

如何从 MongoDB 迁移到 MySQL

ActiveRecord 中具有相同功能插件在实现上有很大不同。...代码迁移 Mongoid 在使用时都是通过 include 将相关方法加载到当前模型 ActiveRecord 是通过继承 ActiveRecord::Base 方式使用,完成了对数据预处理...MySQL 中对应表中,并将所有的 _id 转换成 uuid、xx_id 转换成 xx_uuid,而后者就是前面提到:通过 uuid 和 xx_uuid 关联重新建立模型之间关系并在最后删除所有的...我们获得当前类所有结尾为 _uuid 属性,然后遍历所有的数据行,根据 uuid 值和 post_uuid 属性中 “post” 部分获取到表名,最终得到对应关联模型,在这里我们也处理了类似多态特殊情况... ActiveRecord 中会建立一张单独表,表名称是两张表名按照字母表顺序拼接,如果是 Post 和 Tag,对应多对多表就是 posts_tags,除了创建多对多表,has_and_belongs_to_many

5K52

本体入门(一):本体构建 101

有些本体只区分单数复数基数,有些本体则进一步定义基数最大和最小值; 属性值类型 描述一个属性类型,常见类型有: String 类型 Number 类型 Boolean 类型 Enumerated...一个常见错误是将单数类作为其复数子类,两者间并不满足"一种"关系,在命名时可以统一单复数来避免这一错误。...等级关系具有传递性: 如果 B 是 A 子类,C 是 B 子类,那么 C 是 A 子类。 距离一个类最近子类称为直接子类。类层次结构不是一成不变,可能随着时间推移需要重构结构。...此外,还要注意区分类及其名称: 类表示是一类概念,不是表示这些概念词语。 相同概念近义词不应该被表示成多个类。很多系统允许为类关联近义词,如果不能,应该在类文档中说明。...6.2 单数复数 在命名中使用单复数没有好坏之分,只要保持前后一致即可,通常用单数。有的系统可能会提前要求确定单复数并不允许更改。

2.1K31

大佬都在用数据库设计规范!你不点进来看看嘛?

因此,数据库名,表名,字段名,都不允许出现任何大写字母 表名不使用复数名词 表名应该仅仅表示表里面的实体内容,不应该表示实体数量 对于DAO类名也是单数形式,符合表达习惯 禁止使用MySQL官方保留字命名...[业务名称_表作用] 库名与应用名称尽量一致 如果修改字段含义或者对字段表示状态追加时,需要及时更新字段注释 字段允许适当冗余以提高查询性能,但必须考虑数据一致.冗余字段应遵循: 不是频繁修改字段...不是varchar超长字段,更不能是text字段 商品类目名称使用频率高,字段长度短,名称基本一成不变,可在相关联表中冗余存储类目名称,避免关联查询 单表行数超过500万行或者单表容量超过2GB,...能够建立索引种类分为主键索引,唯一索引,普通索引三种,覆盖索引只是一种查询效果 用explain结果,extra列会出现: using index 利用延迟关联或者子查询优化超多分页场景:...ISNULL来判断是否为NULL值 NULL与任何值直接比较都为NULL: NULLNULL返回结果是NULL,不是false NULL==NULL返回结果是NULL,不是true NULL

43720

​第 07 篇:创作后台开启,请开始你表演!

例如文章发布时间 created_time 和修改时间 modified_time,应该在创建或者修改文章时自动生成,不是手动控制。...model 在 admin 后台显示名称,这里 verbose_name_plural 用来表示多篇文章时复数显示形式。...简化新增文章表单 接下来优化新增文章时,填写表单数不合理地方。...因为 timezone 模块中函数会自动帮我们处理时区,所以我们使用是 django 为我们提供 timezone 模块,不是 Python 提供 datetime 模块来处理时间。...答案是不能,因为虽然第一次保存数据时,会根据默认值指定为当前时间,但是当模型数据第二次修改时,由于 modified_time 已经有值,即第一次默认值,那么第二次保存时默认值就不会起作用了,如果我们不修改

1.1K20

领域建模之数据模型设计方法论

评审结束,一般会一股脑投入到设计开发,数据库表设计就是其中不可或缺一个过程。...而在这个过程中,往往会感觉没有可以参考理论,有时候甚至对设计数据库表产生怀疑,不断考虑此设计是否符合业务、表结构设计后期是否具有通用性、表之间关系是否恰当可扩展等等。...、重复、歧义:归结为一个对象模型复数:students --> student 归结为一个对象模型; 属性:可以归结为对象模型特征,不单独升级为一个对象,但特殊场景下,比如文章分类可以为文章一个属性...比如“预排线模型”中“运输任务编码”属性,属于调度域模型属性,后期会与调度域系统产生关联关系,所以把运输任务编码作为“预排线模型一个派生属性。...; 扩展表:①数据模型垂直拆分,减少大对象;②变更不是很频繁字段可以放到扩展模型; 社区团购排线部分模型设计图: 图4 终版数据模型图 05 扩展 一、领域模型设计阶段思考 对象:领域模型对象,

1.3K10

《SQL开发样式指南》,让你SQL代码更加规范

存储符合ISO-8601标准日期格式(YYYY-MM-DD HH:MM:SS.SSSSS)。 最好使用标准SQL函数不是特定供应商函数以提高可移植性。...Naming conventions 命名惯例 General 一般原则 保证名字独一无二且不是保留字。 保证名字长度不超过30个字节。 名字要以字母开头,不能以下划线结尾。...在名字中需要空格地方用下划线代替。 尽量避免使用缩写词。使用时一定确定这个缩写简明易懂。 Tables 表名 用集群名称,或在不那么理想情况下,复数形式。如staff和employees。...最好使用保留字全称不是简写,用ABSOLUTE不用ABS。 当标准ANSI SQL关键字能完成相同事情时,不要使用数据库服务器相关关键字,这样能增强可移植性。...Preferred formalisms 推荐形式 尽量使用BETWEEN不是多个AND语句。 同样地,使用IN()不是多个OR语句。 当数据输出数据库时需要处理时,使用CASE表达式。

11710

《现代Javascript高级教程》详解前端数据存储

属性 Cookie是一种在客户端存储数据机制,它将数据以键值对形式存储在用户浏览器中。Cookie具有以下属性: 名称和值:每个Cookie都有一个名称和对应值,以键值对形式表示。...属性 Session是一种在服务器端存储和跟踪用户会话状态机制。Session具有以下属性: 存储位置:Session数据存储在服务器端内存或持久化介质中,不是存储在客户端。...属性 SessionStorage是一种在客户端存储临时数据机制。SessionStorage具有以下属性: 存储位置:SessionStorage数据存储在客户端内存中,与当前会话关联。...表单数据保存:SessionStorage可用于保存用户填写单数据,以便在刷新页面或返回页面时恢复数据,防止数据丢失。...属性 LocalStorage是一种在客户端存储持久性数据机制。LocalStorage具有以下属性: 存储位置:LocalStorage数据存储在客户端持久化介质中,与浏览器相关联

22030

01 . GitLab简介及环境部署

Gitlab于2017年1月31日发布一系列紧急通告称,位于荷兰系统管理员因操作失误删除了包含310GB产品数据文件夹,在取消删除操作后仅剩下4.5GB。...运维人员之后检查发现,网站宣称和配备多项备份措施均未正常运作或难以利用。Gitlab在YouTube直播了恢复数过程。...网站最终丢失了最后6小时数据库数据(包括问题、合并请求、评论、片段等,不含代码库) GitLab是由 GitLab Inc.开发,使用 MIT 许可证基于网络 Git 仓库管理工具开源项目,且具有...其实说直白点,他就是个git服务器,和github差不多,只不过,这个gitlab可以下载到本地进行搭建,代码存在本地服务器上,不是远端github上....和gitlab-secrets.json文件包含敏感数据,并且不包含在此备份中。

3.8K63

三分钟让你了解什么是Web开发?

流行服务器端脚本语言是PHP、Perl、JSP、Ruby on Rails等等。...可能会有更多关于用户存储信息,例如他指定,最后登录时间等等。 您可能已经猜到,另一种选择是将“用户”信息存储在另一个表中,并将其与下面的“Related”Id关联在一起。...如果数据是有效,那么只有表单数据被持久化到tbl_blog_post中,或者它将消息发送回客户端,以输入丢失信息,并且进程继续。...这里blogpost是控制器名称,视图是控制器中一个操作(方法)。id是博客文章id。...使用Ajax时,整个页面并没有刷新—只是需要更改部分。所以,如果你有了新邮件,不是刷新整个页面,你只是看到了一个新电子邮件在上面。

5.7K30

软件方法(下)第8章分析之分析类图—知识篇Part07(202205更新)命名词性和语言

图8-67 “动词”直接作为类名字,不用加后缀 如果一个用语在某个领域中已经存在很久,成为了该领域术语,即使它看起来犯了以上提到冗余错误,用来作为模型元素命名也无妨。...严格来说,“状态属性”并不是属性,要注意“状态属性”和上面提到形容词测量值区别。 如图8-69,“人”“重”和“重量”不是一个概念。“重量”是属性,“重”是状态。...8.2.4.7 类命名用单数名称已经是一个抽象概念,既代表属于这个类所有对象集合,也指代集合中任何一个对象。...这两种用法,分别对应于后文要讲解泛化和关联关系。 如果用复数表达,例如汉语“人们”,英语“people”,第二种用法就很别扭了,实例“某个人们”是什么?...有一些常见开发习惯,如数据库表名用复数,甚至有的框架在类转换表时,直接就在名称后面加上s,理由是表里有很多行。其实"类"、"表"概念已经隐含了"多个对象"、"多行"意思,不用再加了。

31320

干货 | 如何编写可读性更高代码?

没有优先事项不是其他优先事项(当所有事情都是优先事项时,什么都不是)是不存在。 ? 培养清晰感 写得好需要知道好写作是什么样创建清晰代码则需要知道清晰代码是什么样。...也许功能某些部分像做出决定一样起作用某些部分像采取行动一样起作用。您可以使用许多不同维度来分解功能。需要练习才能善于看到正确使用方法。 较小功能有一些优点: 逻辑每一位都有一个名称。...这使得代码难以更改,因为两个不相关代码片段结构将被束缚在一起。 是否应该对某些代码进行重复数据删除测试很简单:如果更改了一个代码不更改另一个代码,会发生什么不好事情?...记住,对代码进行重复数据删除与创建抽象不是一回事。 避免配置功能 优先选择许多功能,不是一些可配置功能。 我确定您已经看过这样故事:您从一个在三个不同地方调用干净函数开始。...如果您不知道自己功能将需要成为赛车,请不要剥离空调。让生物安逸地工作-专注于编写易于阅读代码,不是易于计算机运行代码。 过早概括也是如此。

71720
领券