CakePHP 2.x 升级3.0
CakePHP 2.x => 3.x 升级手顺
一、Controller层
1.find('list')
原2.x中该方法通过指定option中的'fields'来实现key=>value
3.x通过option中的'keyField'和'valueField'来替换,返回值需要用toArray()进行转换
2.find('first')、find('count')
3.x中已经完全废弃掉这两个参数,而使用find()->first()以及find()->count()进行替换
3.find查询关联表时,必须添加'contain'属性,Cake 3.x 默认不会将表关联在一起
4.findById
**?没有找到相关文档?**
2.x中findById格式为($id,array $fields)
3.x中可能只有一个参数($id),需要通过select(array $fields)方法来筛选数据
5.Component->initialize()
2.x通过initialize(Controller $Controller)获取调用该Component的Controller
3.x改变了initialize的参数变为initialize(array $config),通过$controller = $this->_registry->getController();获取
6.SessionComponent
3.x废弃掉了该Component而改用$this->request->session()替换
二、Model层
1.Associations
2.x通过定义属性来实现关联
3.x需要在Table中的initialize方法中调用$this->belongsTo、$this->hasMany、$this->belongsToMany、$this->addAssociations等方法来实现
2.Validation
2.x通过定义validate属性实现数据验证
3.x需要在Table中定义validationDefault(Validator $validator)方法来实现
3.virtualFields
3.x中废弃了这个属性,如需使用,需要在Entity中追加方法
例如 需要A表定义虚拟字段 full_name
首先要在A表的Entity中追加 protected function _getFullName()
然后将 full_name 添加到$_accessible中
使用时A->find 后该值只可通过object->property的方式获取,无法通过数组方式获取
4.field()
**?没有找到相关文档?**
3.x可能废弃了该方法可以用get()方法替换
5.ClassRegistry::init()
3.x废弃该方法需要用TableRegistry::get()替换
6.Mysql别名设定
2.x只需要在fields属性中加入as即可 如 'fields'=>array('id as table_id')
3.x如定义别名需要用加入key 如 'fields'=>['table_id'=>'id']
三、View层
(View层,从2.x的View文件夹搬迁到3.x的Template)
1.$this->Html->url
3.x中用$this->Url->build替代
四、Bug
1. Associations
hasMany的表关联查询时,如果需要指定fields则必须在fields中加入关联键???
此升级手顺会持续更新中~~~~~~
CakePHP 2.x 升级3.0的更多相关文章
- 从CakePHP 1.3升级到2.5
从CakePHP 1.3升级到2.5 摘要:最近把一个CakePHP 1.3的项目升级到了2.x,当然就用最新的版本2.5.3了,结果基本满意.本文记录了升级的过程,包括使用的工具,遇到的问题和相应的 ...
- xcode7.3 升级 xcode8.0 后权限设置问题(升级xcode 8.0 后构建版本不显示问题)
xcode7.3 升级 xcode8.0 后权限设置问题(升级xcode 8.0 后构建版本不显示问题) 前两天为了适配 iOS10 的系统 我将xcode 7.3 升级到了 xcode 8.0 但是 ...
- gitlab RPM卸载 & 安装 && 升级(9.0.13-》9.5.9-》10.0->10.3.9->10.6.6-》10.8-》11.0)
版本:9.0.3 升级版本:9.0.13 一,停止服务 gitlab-ctl stop unicorn gitlab-ctl stop sidekiq gitlab-ctl stop nginx 二, ...
- python3 升级 pip9.0.1 到pip-9.0.3
首先试试 python -m pip install --upgrade pip python3.5 升级 pip-9.0.3报错 You are using pip version 9.0.1, h ...
- 【Unity】近期整理Unity4.x 项目升级Unity5.0 过程中出现的各种常见问题,与大家共享。
近期整理Unity4.x 项目升级Unity5.0 过程中出现的各种常见问题,与大家共享. 1:Unity4.x 项目中3D模型其材质丢失,成为"白模"? 解决方式:手 ...
- Android Studio升级到0.8.1后怎样设置字体大小?
升级到0.8.1后.打开设置字体大小页面.你会发现无论是Default还是Darcula,都不同意你改变字体的大小.事实上这个是由于这两个模式是Android Studio自带模式,所以不同意你修改, ...
- 升级xcode10.0, 终端运行 运行报错:Print: Entry, “:CFBundleIdentifier”, Does Not Exist
目录 问题原因 解决方法 终端解决 Print: Entry, ":CFBundleIdentifier", Does Not Exist 第一步: 去官网GitHub下载对应包就 ...
- centos6.8 Mysql-5.7.20 升级 mysql-8.0.14-1
Mysql-5.7.20 升级 mysql-8.0.14-1 操作前建议先查阅以下网页初步了解Mysql版本升级信息 https://blog.csdn.net/u012946310/artic ...
- GreenDao2.2升级GreenDao3.0的适配之路
前言.为什么要升级到Greendao3.0? 1. 多人开发 以往的数据库建表建Dao等操作要新开一个module,在统一的地方管理数据库建表,现在可以直接写Entity.多人开发时自己管自己的Ent ...
随机推荐
- UVA 12166 Equilibrium Mobile
题意: 给出数个天平,每个天平的结构都类似于二叉树,只有左右重量都相等时才平衡,求每个天平最少改多少个秤砣,也就是叶子结点可以使得整个天平平衡.天平的深度不超过16. 分析: 要使得改动的数量最少,那 ...
- android: ListView历次优化
第一版: ListView一屏显示多少对象其内部就创建多少View对象.滑动时退出的缓存对象留给滑进去时调用getView传的convertView.因为如果每次都findViewById查找创建视图 ...
- c# foreach枚举器
要是自己的类支持foreach ,必须在类中必须有GetEnumerator方法,该方法返回的是一个IEnumerator类型的枚举器; public class MyStruct { public ...
- ToString()的浅显解释(转)
转自:http://zhidao.baidu.com/link?url=2g3NZ8tmL635L5XmWUh5i-mAlAsySunJryiq2Jl0LRsM691049dOwhoXy-8kJ6HL ...
- HDU 1021 - Fibonacci Again
找规律,分析让 F[N] 每一项对 3 取余的余数: 1,2,0, 2,2,1,0, 1,1,2,0, 2,2,1,0, 1,1,2,0, 2,2,1,0 ......... 显然循环了 #inclu ...
- hdu3525
题目大意:某个大学有个2个校区,此大学有n(1<=n<=10000)个运动员,这n个运动员在每个校区都挑选了m(1<=m<=10)个拉拉队.现在每个校区(A/B)中,这m*n个 ...
- BZOJ 3648: 寝室管理( 点分治 + 树状数组 )
1棵树的话, 点分治+你喜欢的数据结构(树状数组/线段树/平衡树)就可以秒掉, O(N log^2 N). 假如是环套树, 先去掉环上1条边, 然后O(N log^2 N)处理树(同上); 然后再O( ...
- locate linux文件查找命令
locate 让使用者可以很快速的搜寻档案系统内是否有指定的档案.其方法是先建立一个包括系统内所有档案名称及路径的数据库,之后当寻找时就只需查询这个数据库,而不必实际深入档案系统之中了.在一般的 di ...
- Oracle中字段的修改操作语法
对字段操作 操作方法 更新字段名 alter table TABLE_NAME rename column column_old to column_new; 添加字段 alter table T ...
- 自定义HTTP错误页太小,导致显示默认友好错误页问题
一 . 问题描述: chrome 向服务器发送构造字符串,返回错误页面如下 <html> <head> <title>404 Not Found</title ...