thinkphp怎么查询多个数据

发布时间 - 2022-12-05 00:00:00    点击率:
thinkphp查询多个数据的方法:1、使用Table方法进行多表查询,语法如“$Model->table('think_blog blog,think_type type')”;2、使用Join方法进行查询,代码如“$Model->join('work ON artist.id = work.artist_id')”。

本教程操作环境:Windows7系统、ThinkPHP5版、Dell G3电脑。

thinkphp怎么查询多个数据?

THINKPHP 中关联查询(多表查询)

THINKPHP 中关联查询(多表查询)可以使用 table() 方法或和join方法,请看示例:

1、Table方法:定义要操作的数据表名称,可以动态改变当前操作的数据表名称,需要写数据表的全名,包含前缀,可以使用别名,例如:

$Model->Table('think_user user')
->where('status>1')
->select();
$Model->table('think_blog blog,think_type type')
->where('blog.typeid=type.id')
->field('blog.id as id,blog.title,blog.content,type.typename as type')
->order('blog.id desc' )
->limit(5)
->select();

Table方法的参数支持字符串和数组,数组方式的用法:

$Model->Table(array('think_user'=>'user','think_group'=>'group'))
->where('status>1')
->select();

使用数组方式定义的优势是可以避免因为表名和关键字冲突而出错的情况。

 

注:如果不定义table方法,默认会自动获取当前模型对应或者定义的数据表。

 

2、Join方法:查询Join支持,Join方法的参数支持字符串和数组,并且join方法是连贯操作中唯一可以多次调用的方法。例如:

$Model->join('work ON artist.id = work.artist_id')
->join('card ON artist.card_id = card.id')
->select();
//Left Join
$Model->table('user U')
->join('news N on U.id=N.cid')
->field('U.*,N.*')
->order('id desc')
->limit('8')
->findall();

 

默认采用LEFT JOIN 方式,如果需要用其他的JOIN方式,可以改成

$Model->join('RIGHT JOIN work ON artist.id = work.artist_id')
->select();
//Right Join
$Model->table('user U')
->join(array('right','news N on U.id=N.cid'))
->field('U.*,N.*')
->order('id desc')
->limit('8')
->findall();

如果join方法的参数用数组的话,只能使用一次join方法,并且不能和字符串方式混合使用。

$Model->join(array(' work ON artist.id = work.artist_id', 'card ON artist.card_id = card.id'))
->select()

 

运用这种连贯操作方法,可以有效的提高数据查询的代码清晰度和开发效率。

 

查看连贯操作的SQL语句的方法:

echo $Model->getLastSql(); //打印一下SQL语句,查看一下

例2:

1、table()

$list = $user->table('user_status stats, user_profile profile')->where('stats.id = profile.typeid')->field('stats.id as id, stats.display as display, profile.title as title,profile.content as content')->order('stats.id desc' )->select();

2.1、join()2表查询

$user = new Model('user');
$list = $user->join('RIGHT JOIN user_profile ON user_stats.id = user_profile.typeid' );

2.2、join() 多表查询

        $list = $Form->join('think_sort ON think_form.sort_id = think_sort.sort_id' )->join('think_brand ON think_form.brand_id = think_brand.brand_id' )->select();

3、原生查询

$Model = new Model();
$sql = 'select a.id,a.title,b.content from think_test1 as a, think_test2 as b where a.id=b.id '.$map.' order by a.id '.$sort.' limit '.$p->firstRow.','.$p->listRows;
$voList = $Model->query($sql);

推荐学习:《thinkPHP视频教程》


# thinkphp  # 多个  # 可以使用  # 其他的  # 需要用  # 操作方法  # 数据查询  # jpg 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel如何实现全文搜索_Laravel Scout集成Algolia或Meilisearch教程  Laravel队列由Redis驱动怎么配置_Laravel Redis队列使用教程  手机软键盘弹出时影响布局的解决方法  网页制作模板网站推荐,网页设计海报之类的素材哪里好?  Laravel如何实现邮件验证激活账户_Laravel内置MustVerifyEmail接口配置【步骤】  Laravel怎么做数据加密_Laravel内置Crypt门面的加密与解密功能  js实现点击每个li节点,都弹出其文本值及修改  python中快速进行多个字符替换的方法小结  Python文本处理实践_日志清洗解析【指导】  如何在 Go 中优雅地映射具有动态字段的 JSON 对象到结构体  HTML5打空格有哪些误区_新手常犯的空格使用错误【技巧】  如何用西部建站助手快速创建专业网站?  Laravel策略(Policy)如何控制权限_Laravel Gates与Policies实现用户授权  网页设计与网站制作内容,怎样注册网站?  Laravel Livewire是什么_使用Laravel Livewire构建动态前端界面  如何在Windows环境下新建FTP站点并设置权限?  悟空浏览器如何设置小说背景色_悟空浏览器背景色设置【方法】  uc浏览器二维码扫描入口_uc浏览器扫码功能使用地址  如何构建满足综合性能需求的优质建站方案?  Laravel广播系统如何实现实时通信_Laravel Reverb与WebSockets实战教程  *服务器网站为何频现安全漏洞?  如何在万网主机上快速搭建网站?  Laravel怎么解决跨域问题_Laravel配置CORS跨域访问  Laravel Asset编译怎么配置_Laravel Vite前端构建工具使用  如何在万网开始建站?分步指南解析  悟空识字如何进行跟读录音_悟空识字开启麦克风权限与录音  教你用AI润色文章,让你的文字表达更专业  Laravel如何实现多级无限分类_Laravel递归模型关联与树状数据输出【方法】  Laravel如何使用Eloquent ORM进行数据库操作?(CRUD示例)  教学论文网站制作软件有哪些,写论文用什么软件 ?  Laravel Blade组件怎么用_Laravel可复用视图组件的创建与使用  Chrome浏览器标签页分组怎么用_谷歌浏览器整理标签页技巧【效率】  Laravel与Inertia.js怎么结合_使用Laravel和Inertia构建现代单页应用  公司网站制作价格怎么算,公司办个官网需要多少钱?  弹幕视频网站制作教程下载,弹幕视频网站是什么意思?  如何快速上传自定义模板至建站之星?  JS弹性运动实现方法分析  如何用PHP快速搭建高效网站?分步指南  详解Nginx + Tomcat 反向代理 负载均衡 集群 部署指南  绝密ChatGPT指令:手把手教你生成HR无法拒绝的求职信  HTML透明颜色代码怎么让下拉菜单透明_下拉菜单透明背景指南【技巧】  Win11怎么开启自动HDR画质_Windows11显示设置HDR选项  Laravel怎么生成URL_Laravel路由命名与URL生成函数详解  香港服务器租用费用高吗?如何避免常见误区?  使用豆包 AI 辅助进行简单网页 HTML 结构设计  Laravel如何为API生成Swagger或OpenAPI文档  Laravel的契約(Contracts)是什么_深入理解Laravel Contracts与依赖倒置  作用域操作符会触发自动加载吗_php类自动加载机制与::调用【教程】  JS经典正则表达式笔试题汇总  Android中Textview和图片同行显示(文字超出用省略号,图片自动靠右边)