thinkphp最新版本是什么,thinkphp开发工具及搭建教程

thinkphp最新版本是什么,thinkphp开发工具及搭建教程,第1张

thinkphp最新版本是什么,thinkphp开发工具及搭建教程 点击右上方,关注开源中国OSC头条号,获取最新技术资讯5.2在经过几个月的测试版本迭代后,正式进入候选版本。


之后的重点工作会是扩展以及文档的完善。


当然,不排除核心还有微调的可能。


ThinkPHP5.2RC1版本继上个版本beta3版本发布以来,主要更新如下:新特性支持FIND_IN_SET查询增加了新的查询表达式对FIND_IN_SET的支持,使用下面的查询即可:Db::name('user')->where('group_list', 'find in set', 2)->select();增加了分区查询支持增加了对分区的支持(需要MySQL5.6+版本),例如你对user表分了p1和p2两个分区,你可以使用下面的查询:Db::name('user')->partition('p1')->insert(['name' => 'think']);Db::name('user')->partition(['p1', 'p2'])->select();Db::name('user')->partition(['p1', 'p2'])->where('name', 'think')->update(['name' => 'thinkphp']);Db::name('user')->partition('p1')->where('name', 'think')->delete();增加了ON DUPLICATE UPDATE支持支持ON DUPLICATE UPDATE,例如:Db::name('user')->duplicate(['score' => 10])->insert(['name' => 'think']);增加extra方法设置查询额外参数extra方法可以用于CURD查询,例如:Db::name('user')->extra('IGNORE')->insert(['name' => 'think']);Db::name('user')->extra('DELAYED')->insert(['name' => 'think']);Db::name('user')->extra('SQL_BUFFER_RESULT')->select();新增单个数据改为使用更清晰和高效的INSERT SET语法,例如下面的查询Db::name('user')->insert(['name' => 'think', 'score' => 100]);实际生成的SQL语句是INSERT INTO user SET `name` = 'think', `score` = 100增加whereFieldRaw查询方法该方法用于对字段使用SQL函数查询,例如:User::whereFieldRaw('date_format("create_time", "%Y")', '2019')->select();User::whereFieldRaw('date_format("create_time", "%Y")', '>', '2018')->select();Query类的update方法支持获取模型的更新条件现在可以直接使用模型的查询条件作为Db类update方法的数据更新条件,例如:$user = User::find(1);$user->field(['name'])->update(['name' => 'thinkphp']);数据集类增加快捷查询(过滤)方法thinkCollection类增加whereLike/whereNotLike/whereIn/whereNotIn/whereBetween/whereNotBetween等快捷方法,用于更方便的进行数据筛选而替代使用不够直观的where方法。


增加optimize:facade指令可以在本地开发的时候使用该指令为Facade类生成对应类的方法注释。


你只需要在定义Facade类的时候,在类的注释中添加 @mixin 选项,例如使用@mixin thinkDb注释后,使用optimize:facade指令后,就会在类的注释中自动生成thinkDb类的相关public方法注释,方便IDE自动提示,每个类的方法返回值类型最好明确指定(没有返回值的则使用void),否则注释中会使用mixed返回类型。


增加新的表达式查询解析扩展增加了新的thinkdbExpression类(原来的Expression类已经更改为Raw类)用于查询表达式的扩展解析,你只需要自定义一个表达式解析类,例如:<?phpnamespace appcommonexpression;use thinkdbExpression;class Rlike extends Expression{ /** * 分析查询表达式 * * @param Query $query 查询对象 * @param string $key * @param string $exp * @param string $field * @param integer $bindType * @return string */ public function parse(Query $query, string $key, string $exp, string $field, int $bindType): string { if ($this->value instanceof Raw) { $value = $this->value->getValue(); } else { $value = $this->value; } return $key .' RLIKE ' . $value ; }}现在我们就可以使用下面的查询语法了:User::where('name', 'rlike', new appcommonexpressionRlike('^think'))->select();提供了关闭事件机制的方法如果你完全不需要使用事件机制,可以在入口文件中使用withEvent方法关闭事件功能。


(new App())->withEvent(false)->run()->send();不过值得提醒的是,新版的路由功能、多语言支持和请求缓存功能都是利用了事件机制响应的。


用法调整原来Query类的raw方法移动到Db类虽然用法上没有改变,但Db::raw()方法的调用效率会更高一些。


或者你可以直接使用新的助手函数raw替代Db::raw。


原来的Expression类改为Raw类原来的thinkdbExpression类更改为thinkdbRaw类,更加贴切。


多对多关联的pivotDataName方法更名为name方法使用更加简洁的name方法替代原来的pivotDataName方法。


废弃用法和参数取消Query类的extend方法取消了Query类的extend方法,如果需要扩展查询方法,建议自定义Query类并继承系统的thinkdbQuery类即可,然后在模型中定义query属性或者配置数据库连接的query参数为你的自定义类。


取消Request类的hook方法由于不建议扩展Request类的方法,该方法已经在最新版本中取消。


取消URL参数模式配置原来的URL参数模式配置参数url_param_type,统一使用参数/值的方式。


更新日志改进Url类build方法修复获取当前页码数据类型修正parseKey方法传入数值的情况改进optimize:config指令对declare申明的支持取消URL参数模式配置增加optimize:facade指令用于生成facade类的方法注释取消Query类的extend方法原来的Expression类更改为Raw类增加新的Expression类用于表达式查询扩展Collection类增加whereLike/whereNotLike/whereIn/whereNotIn/whereBetween/whereNotBetween等快捷方法Query类的raw方法移动到Db类取消Request类的hook方法修正Route::view方法优化模型获取器方法多对多关联的pivotDataName方法更名为name方法Query类增加partition/duplicate/extra方法改进mysql驱动支持分区和duplicate以及额外参数mysql驱动的insert方法改用更清晰的insert set语法修正Event类bind属性定义修正验证类的append一处bug改进Query类update方法支持读取模型的更新条件取消模型类的getUpdateWhere方法统一使用getWhere方法改进query类的fetchArray方法处理改进路由类取消app属性增加thinkfacadeRuleName类增加whereFieldRaw查询方法改进自动多应用名称获取App类增加withEvent方法支持关闭事件机制改进Dispatch类对var_dump的支持改进hasMany的withCount自关联修正纯数字检测参数类型转换问题修正raw助手函数mysql支持find_in_set查询改进url方法对自动多应用的支持

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/tougao/595797.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-13
下一篇 2022-04-13

发表评论

登录后才能评论

评论列表(0条)

保存