登录|注册|帮助中心|联系我们

导航
首页 综合百科 生活常识 数码科技 明星名人 传统文化 互联网 健康 影视 美食 教育 旅游 汽车 职场 时尚 运动 游戏 家电 地理 房产 金融 节日 服饰 乐器 歌曲 动物 植物
当前位置:首页 > 生活常识

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

发布时间:2023年1月2日责任编辑:陈小树标签:教程

点击右上方,关注开源中国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类)用于查询表达式的扩展解析,你只需要自定义一个表达式解析类,例如:

<?php
namespace appcommonexpression;
use thinkdbexpression;
class Rlike extends expression
{

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方法对自动多应用的支持

其它知识推荐

溜溜百科知识网——分享日常生活学习工作各类知识。 垃圾信息处理邮箱 tousu589@163.com
icp备案号 闽ICP备14012035号-2 互联网安全管理备案 不良信息举报平台 Copyright 2023 www.6za.net All Rights Reserved