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,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

许多用户在选择智能手表的时候都会选择的华为的品牌,其中华为GT3pro和GT4都是非常热门的选择,不少用户都很好奇华为GT3pro和GT4有什么区别,下面就就给大家介绍一下二者。华为GT3pro和GT4有什么区别一、外观GT4:46mm和41mm,材质是玻璃表镜+不锈钢机身+高分纤维后壳。GT3pro:46.6mm和42.9mm,材质是蓝宝石玻璃表镜+钛金属机身/陶瓷机身+陶瓷后壳二、健康GT4:采用最新的华为Truseen5.5+算法,结果会更加的精准。GT3pro:多了ECG心电图和血管及安

SpringBoot小白创建项目,扫描不到Controller一系列问题1.2.3.4.5.6.还有一种办法是在启动服务类的入门,添加@ComponentScan(basePackages={“xxx.xxx.xx”,“xxx.xxx.xx”})里面的是包的全限定名,可以为多个SpringBoot自定义controller无法扫描到SpringBoot自定义controller路由找不到,原因是启动类和自定义的Controller包不在同一级目录下。官方建议application.java放的位

为什么截图工具在Windows11上不起作用了解问题的根本原因有助于找到正确的解决方案。以下是截图工具可能无法正常工作的主要原因:对焦助手已打开:这可以防止截图工具打开。应用程序损坏:如果截图工具在启动时崩溃,则可能已损坏。过时的图形驱动程序:不兼容的驱动程序可能会干扰截图工具。来自其他应用程序的干扰:其他正在运行的应用程序可能与截图工具冲突。证书已过期:升级过程中的错误可能会导致此issu简单的解决方案这些适合大多数用户,不需要任何特殊的技术知识。1.更新窗口和Microsoft应用商店应用程

前言在某些情况下,服务的controller中前缀是一致的,例如所有URL的前缀都为/context-path/api/v1,需要为某些URL添加统一的前缀。能想到的处理办法为修改服务的context-path,在context-path中添加api/v1,这样修改全局的前缀能够解决上面的问题,但存在弊端,如果URL存在多个前缀,例如有些URL需要前缀为api/v2,就无法区分了,如果服务中的一些静态资源不想添加api/v1,也无法区分。下面通过自定义注解的方式实现某些URL前缀的统一添加。一、

第1部分:初始故障排除步骤检查苹果的系统状态:在深入研究复杂的解决方案之前,让我们从基础知识开始。问题可能不在于您的设备;苹果的服务器可能会关闭。访问Apple的系统状态页面,查看AppStore是否正常工作。如果有问题,您所能做的就是等待Apple修复它。检查您的互联网连接:确保您拥有稳定的互联网连接,因为“无法连接到AppStore”问题有时可归因于连接不良。尝试在Wi-Fi和移动数据之间切换或重置网络设置(“常规”>“重置”>“重置网络设置”>设置)。更新您的iOS版本:

php提交表单通过后,弹出的对话框怎样在当前页弹出php提交表单通过后,弹出的对话框怎样在当前页弹出而不是在空白页弹出?想实现这样的效果:而不是空白页弹出:------解决方案--------------------如果你的验证用PHP在后端,那么就用Ajax;仅供参考:HTML code

watch4pro和gt各自具有不用的特点和适用场景,如果注重功能的全面性、高性能和时尚外观,同时愿意承担较高的价格,那么Watch 4 Pro可能更适合。如果对功能要求不高,更注重电池续航和价格的合理性,那么GT系列可能更适合。最终的选择应根据个人需求、预算和喜好来决定,建议在购买前仔细考虑自己的需求,并参考各种产品的评测和比较,以做出更明智的选择。

在使用PHP框架时,经常会遇到诸如“PHPFatalerror:Class'Controller'notfound”的错误。这种错误通常与框架中文件的命名、位置或加载有关,特别是当你尝试使用控制器时。本文将介绍几种常见的处理方法来解决这个问题。确认文件位置首先,你需要确认控制器文件是否位于框架的正确目录中。例如,如果你使用的是Laravel框架
