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


Posted in PHP onAugust 02, 2018

本文实例讲述了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框架的PHP程序设计有所帮助。

PHP 相关文章推荐
php下实现一个阿拉伯数字转中文数字的函数
Jul 10 PHP
精美漂亮的php分页类代码
Apr 02 PHP
PHP header()函数使用详细(301、404等错误设置)
Apr 17 PHP
PHP中使用break跳出多重循环代码实例
Jan 21 PHP
WordPress迁移时一些常见问题的解决方法整理
Nov 24 PHP
微信开发之网页授权获取用户信息(二)
Jan 08 PHP
详解WordPress中添加友情链接的方法
May 21 PHP
详解PHP5.6.30与Apache2.4.x配置
Jun 02 PHP
Laravel 5.5 的自定义验证对象/类示例代码详解
Aug 29 PHP
php写入文件不覆盖的实例讲解
Sep 17 PHP
PHP常用函数之格式化时间操作示例
Oct 21 PHP
PHP 扩展Memcached命令用法实例总结
Jun 04 PHP
PHP实现的AES加密、解密封装类与用法示例
Aug 02 #PHP
lnmp安装多版本PHP共存的方法详解
Aug 02 #PHP
Laravel5框架添加自定义辅助函数的方法
Aug 01 #PHP
PHP实现数组根据某个单元字段排序操作示例
Aug 01 #PHP
PHP实现的分解质因数操作示例
Aug 01 #PHP
Laravel中为什么不使用blpop取队列详析
Aug 01 #PHP
Laravel5.5以下版本中如何自定义日志行为详解
Aug 01 #PHP
You might like
php+dbfile开发小型留言本
2006/10/09 PHP
如何使用PHP中的字符串函数
2006/10/09 PHP
Yii PHP Framework实用入门教程(详细介绍)
2013/06/18 PHP
PHP中time(),date(),mktime()区别介绍
2013/09/28 PHP
PHP正则获取页面所有图片地址
2016/03/23 PHP
WordPress分页伪静态加html后缀
2016/06/08 PHP
JQuery浮动DIV提示信息并自动隐藏的代码
2010/08/29 Javascript
七个很有意思的PHP函数
2014/05/12 Javascript
js与jquery回车提交的方法
2015/02/03 Javascript
jquery简单实现带渐显效果的选项卡菜单代码
2015/09/01 Javascript
微信小程序使用video组件播放视频功能示例【附源码下载】
2017/12/08 Javascript
关于HTTP传输中gzip压缩的秘密探索分析
2018/01/12 Javascript
快速解决vue在ios端下点击响应延时的问题
2018/08/27 Javascript
@angular前端项目代码优化之构建Api Tree的方法
2018/12/24 Javascript
Vue中使用create-keyframe-animation与动画钩子完成复杂动画
2019/04/09 Javascript
mock.js模拟前后台交互
2019/07/25 Javascript
package.json中homepage属性的作用详解
2020/03/11 Javascript
js实现盒子拖拽动画效果
2020/08/09 Javascript
JavaScript代码实现简单计算器
2020/12/27 Javascript
phpsir 开发 一个检测百度关键字网站排名的python 程序
2009/09/17 Python
python选择排序算法的实现代码
2013/11/21 Python
python之wxPython菜单使用详解
2014/09/28 Python
python基础while循环及if判断的实例讲解
2017/08/25 Python
python数据类型判断type与isinstance的区别实例解析
2017/10/31 Python
python得到电脑的开机时间方法
2018/10/15 Python
Python对excel文档的操作方法详解
2018/12/10 Python
django 实现后台从富文本提取纯文本
2020/07/02 Python
css3动画 小球滚动 js控制动画暂停
2019/11/29 HTML / CSS
Smilodox官方运动服装店:从运动服到健身配件
2020/08/27 全球购物
机械专业应届生求职信
2013/09/21 职场文书
党校培训思想汇报
2013/12/30 职场文书
丧事主持词大全
2014/04/02 职场文书
工程部文员岗位职责
2015/02/04 职场文书
校园安全教育心得体会
2016/01/15 职场文书
MySQL之MyISAM存储引擎的非聚簇索引详解
2022/03/03 MySQL
sql查询语句之平均分、最高最低分及排序语句
2022/05/30 MySQL