thinkPHP5框架闭包函数与子查询传参用法示例

 更新时间:2018年08月02日 14:51:23   作者:菜鸟没翅膀  
这篇文章主要介绍了thinkPHP5框架闭包函数与子查询传参用法,结合实例形式分析了thinkPHP5闭包查询与参数传递相关操作技巧,需要的朋友可以参考下

本文实例讲述了thinkPHP5框架闭包函数用法。分享给大家供大家参考,具体如下:

普通使用

举个栗子:

$this->where(function ($query)
{
 $query->where('id', 1)->whereor('id', 2);
})->find();

上述栗子就是一个简单的where查询的闭包函数使用,使用匿名函数添加复杂条件查询,

最后执行的sql是:

// 加入上述代码写在user模型里,则执行的sql为:
select * from user where (id = 1 or id = 2);

复杂用法

其实闭包函数也不会复杂到哪去,无非带参数不带参数而已。举个栗子(上面的栗子加强下)

$this->where(function ($query) use ($id1, $id2)
{
 $query->where('id', $id1)->whereor('id', $id2);
})->find();

这也就是thinkphp 5 里怎么使用闭包查询传参数的方法,使用use 传入参数。

tp5闭包子查询传参方法

在channel表中查询status,channel_id,channel_name,account_level这些字段,且这些字段的channel_id不在adv_id为$id的表adv_channel_rule中:

$model = new Model();
$id = $req_models["id"];

tp5闭包子查询传参:

$res = $model->table('channel')
  ->field(['status','channel_id','channel_name','account_level'])
  ->where('channel_id','NOT IN',function($query) use ($id) {
 $query->table('adv_channel_rule')->where("adv_id",$id)->field('channel_id');
  })->select();

mysql的原生写法:

$res = 'SELECT adv_id,adv_name,status,account_level FROM `channel` WHERE channel_id NOT IN (SELECT channel_id FROM adv_channel_rule WHERE adv_id='.$id.')';
$result = $model->query($res);

更多关于thinkPHP相关内容感兴趣的读者可查看本站专题:《ThinkPHP入门教程》、《thinkPHP模板操作技巧总结》、《ThinkPHP常用方法总结》、《codeigniter入门教程》、《CI(CodeIgniter)框架进阶教程》、《Zend FrameWork框架入门教程》及《PHP模板技术总结》。

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

相关文章

  • 遍历echsop的region表形成缓存的程序实例代码

    遍历echsop的region表形成缓存的程序实例代码

    下面小编就为大家带来一篇遍历echsop的region表形成缓存的程序实例代码。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-11-11
  • PHP配置把错误日志以邮件方式发送方法(Windows系统)

    PHP配置把错误日志以邮件方式发送方法(Windows系统)

    这篇文章主要介绍了PHP配置把错误日志以邮件方式发送方法(Windows系统),本文给出了配置示例和使用例子,需要的朋友可以参考下
    2015-06-06
  • PHP sdk实现在线打包代码示例

    PHP sdk实现在线打包代码示例

    这篇文章主要介绍了PHP sdk实现在线打包代码示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-12-12
  • php实现网站插件机制的方法

    php实现网站插件机制的方法

    这些天想作一个在网站中实现插件的功能,谷歌了一下,发现一篇文章感觉对我帮助很大,帖出来和大家分享,废话不多说,直接帖出代码供大家分析.
    2009-11-11
  • PHP使用ActiveMQ实例

    PHP使用ActiveMQ实例

    本篇文章是一篇关于PHP使用ActiveMQ的实例,我们分享了实例代码,并做了相关要点的解释,需要的朋友参考下吧。
    2018-02-02
  • PHP模板引擎Smarty之配置文件在模板变量中的使用方法示例

    PHP模板引擎Smarty之配置文件在模板变量中的使用方法示例

    这篇文章主要介绍了PHP模板引擎Smarty之配置文件在模板变量中的使用方法,结合实例形式分析了配置文件变量的具体使用步骤与相关技巧,需要的朋友可以参考下
    2016-04-04
  • Symfony2使用第三方库Upload制作图片上传实例详解

    Symfony2使用第三方库Upload制作图片上传实例详解

    这篇文章主要介绍了Symfony2使用第三方库Upload制作图片上传的方法,结合实例形式较为详细的分析了Symfony2使用第三方库Upload的具体步骤与相关使用技巧,需要的朋友可以参考下
    2016-02-02
  • 新浪微博API开发简介之用户授权(PHP基础篇)

    新浪微博API开发简介之用户授权(PHP基础篇)

    己在开发和学习的过程中,感觉虽然没有太大难度,但还是有一些问题是需要我们注意的,今天就我在开发和学习的过程中,简单的对利用PHP进行新浪微博API开发的内容进行一个整理和说明
    2011-09-09
  • php parse_str() 函数的定义和用法

    php parse_str() 函数的定义和用法

    下面小编就为大家带来一篇php parse_str() 函数的定义和用法。小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-05-05
  • thinkphp框架表单数组实现图片批量上传功能示例

    thinkphp框架表单数组实现图片批量上传功能示例

    这篇文章主要介绍了thinkphp框架表单数组实现图片批量上传功能,结合实例形式分析了js前端图片上传与后台thinkPHP文件处理相关操作技巧,需要的朋友可以参考下
    2020-04-04

最新评论