数码资讯
对thinkphp3.1新特征命名的使用范围
对thinkphp3.1命名函数提供了一系列(相干)的模型操作的封装,使得您可以查询和处理数据更方便。现在让我们去了解这个使用。 1。定义属性 使用命名函数,它涉及到的模型类和范围一致的操作方法使用_scope属性定义的使用。 我们首先定义_scope属性: 类newsmodel延伸模型{ 保护_s
选购提示
关注价格、性能、续航、售后和真实使用场景,理性比较后再下单。
对thinkphp3.1命名函数提供了一系列(相干)的模型操作的封装,使得您可以查询和处理数据更方便。现在让我们去了解这个使用。
1。定义属性
使用命名函数,它涉及到的模型类和范围一致的操作方法使用_scope属性定义的使用。
我们首先定义_scope属性:
类newsmodel延伸模型{
保护_scope美元=阵列(
命名正常
正常=数组(
哪里= >阵列('status= > 1),
),
命名最新
最新=数组(
秩序= > 'create_time desc,
限制=10,
),
);
}
的_scope属性是一个数组,其中每一个代表一个命名范围和命名范围的定义:
命名范围标识>数组(
属性1值1,
属性2值2,
…
)
2。命名范围标识符:可以是任意字符串,以标识当前定义的名称的范围。
命名范围所支持的属性包括:
哪里
查询条件
场
查询字段
秩序
结果排序
表
查询表的名称
极限
结果限制
页
结果分页
有
具有查询
组
组查询
锁
查询锁定
不同的
独特的查询
隐藏物
查询缓存
每个命名范围的定义可以包括这些属性中的一个或多个。
三.方法调用
在完成属性定义之后,下一步是使用范围方法调用命名范围。命名范围的每个调用相当于执行在命名范围内定义的相关操作选项。
调用命名范围
最简单的调用方式是直接调用命名范围,例如:
美元= D(新闻模型); / /在这里你必须使用D方法由于模型中定义的命名范围
元模型->范围(正常)->选择();
元模型->范围('latest)->选择();
生成的SQL语句如下:
SELECT * FROM think_news地位= 1
SELECT * FROM think_news顺序create_time DESC LIMIT 10
调用多个命名范围
您还可以同时支持调用多个命名定义,例如:
元模型->范围(正常)->范围('latest)->选择();
或简化为:
元模型->(正常范围,新的')->选择();
生成的SQL是:
SELECT * FROM think_news地位= 1阶的create_time DESC LIMIT 10
如果在两个命名范围的定义中存在冲突,那么稍后命名的命名范围的定义覆盖了同一属性的定义。
如果调用的命名范围标识不存在,则命名范围将被忽略,例如:
元模型->(正常范围,新的)->选择();
在上述命名作用域中不存在新的,因此只有正常的命名作用域才生效,生成的SQL语句是:
SELECT * FROM think_news地位= 1
4。默认的命名范围
如果定义默认命名范围,系统支持默认命名函数,例如:
保护_scope美元=阵列(
默认命名范围
默认=数组(
哪里= >阵列('status= > 1),
限制=10,
),
);
然后调用默认的命名范围可以直接使用:
$模型>范围()- >选择();
不再需要再次命名名称的命名名称。
元模型->范围('default)->选择();
虽然这两种方法是等价的。
命名范围调整
如果您需要在正常命名范围的基础上添加额外的调整,您可以使用:
元模型->范围(正常,阵列('limit= > 5))->选择();
生成的SQL语句是:
SELECT * FROM think_news地位= 1限5
当然,它也可以根据两个命名范围进行调整,例如:
元模型->(正常范围,新的阵列('limit= > 5))->选择();
生成的SQL是:
SELECT * FROM think_news地位= 1阶的create_time DESC LIMIT 5
自定义命名范围
或者,如果没有任何现有的命名范围,我直接通过一个命名范围:
元模型->范围(阵列('field= > ID、标题、'limit=>5,= > 'status = 1 = >,是'create_time desc))->选择();
这样,生成的SQL就变成了:
选择ID、标题从哪里think_news状态= 1阶的create_time DESC LIMIT 5
5。结合相干操作
命名范围可以用在以前的相干混合运算方式,如定义命名范围_scope财产:
保护_scope美元=阵列(
正常=数组(
哪里= >阵列('status= > 1),
场= > ID、标题,
限制=10,
),
);
然后,当使用时,你可以这样称呼它:
元模型->范围(正常)->(8)->命令限制(ID DESC)->选择();
这样,生成的SQL就变成了:
选择ID,从think_news地位= 1订单ID DESC LIMIT 8题
如果定义的命名范围与相干操作的属性相冲突,下面的调用将覆盖前面。
如果是这样一个电话:
元模型->(8)->限制范围(正常)->命令(ID DESC)->选择();
生成的SQL是:
选择ID,从think_news地位= 1订单ID DESC LIMIT 10题
总结
命名函数的优点是它可以同时定义多个调用,并且可以在项目中起到分工的作用,这样开发人员就可以在编写豆腐操作时避免问题。项目经理只需合理规划它们的命名范围。
1。定义属性
使用命名函数,它涉及到的模型类和范围一致的操作方法使用_scope属性定义的使用。
我们首先定义_scope属性:
类newsmodel延伸模型{
保护_scope美元=阵列(
命名正常
正常=数组(
哪里= >阵列('status= > 1),
),
命名最新
最新=数组(
秩序= > 'create_time desc,
限制=10,
),
);
}
的_scope属性是一个数组,其中每一个代表一个命名范围和命名范围的定义:
命名范围标识>数组(
属性1值1,
属性2值2,
…
)
2。命名范围标识符:可以是任意字符串,以标识当前定义的名称的范围。
命名范围所支持的属性包括:
哪里
查询条件
场
查询字段
秩序
结果排序
表
查询表的名称
极限
结果限制
页
结果分页
有
具有查询
组
组查询
锁
查询锁定
不同的
独特的查询
隐藏物
查询缓存
每个命名范围的定义可以包括这些属性中的一个或多个。
三.方法调用
在完成属性定义之后,下一步是使用范围方法调用命名范围。命名范围的每个调用相当于执行在命名范围内定义的相关操作选项。
调用命名范围
最简单的调用方式是直接调用命名范围,例如:
美元= D(新闻模型); / /在这里你必须使用D方法由于模型中定义的命名范围
元模型->范围(正常)->选择();
元模型->范围('latest)->选择();
生成的SQL语句如下:
SELECT * FROM think_news地位= 1
SELECT * FROM think_news顺序create_time DESC LIMIT 10
调用多个命名范围
您还可以同时支持调用多个命名定义,例如:
元模型->范围(正常)->范围('latest)->选择();
或简化为:
元模型->(正常范围,新的')->选择();
生成的SQL是:
SELECT * FROM think_news地位= 1阶的create_time DESC LIMIT 10
如果在两个命名范围的定义中存在冲突,那么稍后命名的命名范围的定义覆盖了同一属性的定义。
如果调用的命名范围标识不存在,则命名范围将被忽略,例如:
元模型->(正常范围,新的)->选择();
在上述命名作用域中不存在新的,因此只有正常的命名作用域才生效,生成的SQL语句是:
SELECT * FROM think_news地位= 1
4。默认的命名范围
如果定义默认命名范围,系统支持默认命名函数,例如:
保护_scope美元=阵列(
默认命名范围
默认=数组(
哪里= >阵列('status= > 1),
限制=10,
),
);
然后调用默认的命名范围可以直接使用:
$模型>范围()- >选择();
不再需要再次命名名称的命名名称。
元模型->范围('default)->选择();
虽然这两种方法是等价的。
命名范围调整
如果您需要在正常命名范围的基础上添加额外的调整,您可以使用:
元模型->范围(正常,阵列('limit= > 5))->选择();
生成的SQL语句是:
SELECT * FROM think_news地位= 1限5
当然,它也可以根据两个命名范围进行调整,例如:
元模型->(正常范围,新的阵列('limit= > 5))->选择();
生成的SQL是:
SELECT * FROM think_news地位= 1阶的create_time DESC LIMIT 5
自定义命名范围
或者,如果没有任何现有的命名范围,我直接通过一个命名范围:
元模型->范围(阵列('field= > ID、标题、'limit=>5,= > 'status = 1 = >,是'create_time desc))->选择();
这样,生成的SQL就变成了:
选择ID、标题从哪里think_news状态= 1阶的create_time DESC LIMIT 5
5。结合相干操作
命名范围可以用在以前的相干混合运算方式,如定义命名范围_scope财产:
保护_scope美元=阵列(
正常=数组(
哪里= >阵列('status= > 1),
场= > ID、标题,
限制=10,
),
);
然后,当使用时,你可以这样称呼它:
元模型->范围(正常)->(8)->命令限制(ID DESC)->选择();
这样,生成的SQL就变成了:
选择ID,从think_news地位= 1订单ID DESC LIMIT 8题
如果定义的命名范围与相干操作的属性相冲突,下面的调用将覆盖前面。
如果是这样一个电话:
元模型->(8)->限制范围(正常)->命令(ID DESC)->选择();
生成的SQL是:
选择ID,从think_news地位= 1订单ID DESC LIMIT 10题
总结
命名函数的优点是它可以同时定义多个调用,并且可以在项目中起到分工的作用,这样开发人员就可以在编写豆腐操作时避免问题。项目经理只需合理规划它们的命名范围。
声明:本文内容用于数码产品信息整理与选购参考,具体价格、库存、售后政策以官方渠道和电商页面实时信息为准。