架构
事件
如果希望统一添加事件前缀标识,可以定义eventPrefix属性。
数据库
1、find() 返回的是array数组,而select() 返回的是collection数据集对象。
2、removeOption() 方法可以清理掉上查询保留的值。
3、exp查询 需要依照SQL语句的写法来进行拼接。
4、根据之前的课程中,条件字符串复杂组装,比如使用 exp 了,就使用 raw()方 法;而且数据的增加、减少都可以使用Db::Row();
5、如果有多个 where,并且 where 条件是分离的 m a p , 而 map,而 map,而map 本身有多个条件; 那么 m a p 条 件 如 果 需 要 先 执 行 出 结 果 , 再 和 后 续 条 件 判 断 , 也 就 是 加 上 括 号 ; 那 么 , 需 要 对 这 个 map 条件如果需要先执行出结果,再和后续条件判断,也就是加上括号;那么,需要对这个 map条件如果需要先执行出结果,再和后续条件判断,也就是加上括号;那么,需要对这个map 变量,再加上一个中括号处理优先级。
6、whereRaw可以直接写where语句,比较暴力。
7、whereColumn 用于比较两个字段。
8、whereFieldName()方法,查询某个字段的值,注意 FileName 是字段名; Db::name(‘user’)->whereEmail(‘xiaoxin@163.com’)->find(); Db::name(‘user’)->whereUsername(‘蜡笔小新’)->find(); //如果字段是 create_time,则 whereCreateTime,驼峰式写法。
事务处理
1、数据库的表引擎需要是 InnoDB 才可以使用,如果不是调整即可
模型
-
强制更新数据(无论有没有变化)需要在save前加上force方法。
-
allowField无法对Db::Row起到限制,Db::Row中的内容一定会运行。
-
同时定义了模型获取器和动态获取器,那么动态获取器的优先级更高。
-
scope可以连缀使用,同时使用好几个scope
-
在搜索器中进行调用(withsearch)使用的是中括号。
-
使用json数据时需要强调json字段 eg: json([‘list’])
-
一对一和一对多的区别主要是一对一只能查出一条数据,而一对多可以类似于数组一样查出多条数据。
-
profile不加括号时,就当作一个属性来用,可以将信息查询出来,而加括号后就成为了一个方法。不加括号后,在按条件进行查找时,只是把不符合的数据隐藏掉了(数组的下标没有变),而加上括号后会对数据进行重新的组合成数组。
-
关联统计的输出采用“关联方法名”_count,这种结构输出。
路由
- 开启强制路由后,则没法使用原来的路径。
- 定义路由时,如果路由地址有变量的话,路由规则也一定要有对应的。
验证
- 验证包括验证类验证、场景验证、独立验证。
日志
try…catch 抛出异常后,不会在日志中显示了