关联模型
关联模型可以分为主模型,关联模型,以一个模型为参照的模型为主模型,与之对应的模型称为关联模型。
如果在含有外键的表或模型中编写模型关联则使用belongsTo方法,如果在没有外键的表或模型中编写模型关联则使用hasOne方法
一对一:hasOne,belongsTo 参数列表:关联模型,关联外检,主键
一对多:hasMany,belongsTo
多对多:belongsToMany,belongsToMany 参数列表:关联模型名,中间表名,外键名,当前模型关联键名
关联查询方法
普通关联查询
with('items')
,嵌套关联查询with(['items','items.img'])
隐藏字段
隐藏模型字段的原因主要有两个:一是出于安全性的考虑,有些字段是不应该被返回给客户端的;二是为了保持返回的的json格式的数据比较简洁
图片url配置
项目开发中,图片地址有可能是托管在阿里云的oos或者七牛云或者其他平台,又或者存储在自已部署的环境上面,那么返回给前端图片地址的时候就要给出全路径,后端需要自己配置
获取器用法
get + 字段名(驼峰式) + Attr( v a l u e , value, value,data) v a l u e 表 示 当 前 字 段 值 , value表示当前字段值, value表示当前字段值,data表示当前一行记录
定义API版本号
开闭原则:对扩展是开放的,对修改是封闭的,如果你要修改一个代码,最好就是通过扩展的形式来修改
假设我们目前有1.0版本的,由于项目变更我们需要改成2.0版本的,如果还在原来的方法里作判断来改变版本,就违反了我们修改是封闭的原则,破坏了以前的代码,我们无法保证在引入2.0版本之后1.0版本不会对其造成影响,凡是修改代码,都会有影响以前功能正常调用的风险,所以尽量不要去修改代码,而是在合适的地方添加新的扩展。同时,像上面的判断就使代码变得繁琐,达不到我们想要的简洁效果,而且我们这么多判断只是为了解决一个业务而使用了不同的解决方式罢了,所以我们更应该把代码分离出来,每一个版本做一个单独的代码模块
为什么需要版本号?因为当我们的产品有新版本的时候,一些老的版本的接口我们可能就不再支持使用了,可以删除掉我们以前写的接口的代码,然后写新的代码,但是互联网产品一定要考虑对老版本的兼容性问题,有点用户是不会升级到你的新版本,这时候需要多版本以及版本号的支持,只有分版之后,才能对新老客户端都支持,在开始规划产品的时候就要知道应该向上兼容几个版本,而不是完全把以前的版本都给兼容了,没有必要,而且成本也高