php 两表关联查询,Thinkphp连多表查询,关联2个或多个字段

tp连表查询的问题:a表的user_id关联b表的id,a表的race_id关联c表的race_id,a表的race_id和user_id关联d表的race_id和user_id。4表关联,a表和d表还是关联2个字段。

tp作为国内最优秀的php框架,提供了一种简单的join来关联表。下面是示例代码

php 复制代码
$where = array(

'a.id'=>1,

'b.id'=>1,

);

$result = $this ->join('LEFT JOIN b ON a.user_id = b.id')

->join('LEFT JOIN c ON a.race_id = c.race_id')

->join('LEFT JOIN d a.race_id = d.race_id AND a.user_id = d.user_id')

->where($where)

->select();

当然,这只是一个小例子,where条件中的a.id代表a表中的id字段,b.id同理。 LEFT JOIN就是php中连表查询中常用的,join()可以一直加下去(只要表名对应的字段存在,即a.user_id = b.id,a表中必须有user_id,b表中必须有id,条件才能成立)

大家知道,连表有时候会有重复字段,我的解决方法是使用thinkphp中的field()。例如:

php 复制代码
$result = $this ->join('LEFT JOIN b ON a.user_id = b.id')
->join('LEFT JOIN c ON a.race_id = c.race_id')
->join('LEFT JOIN d a.race_id = d.race_id AND a.user_id = d.user_id')
->where($where)
-> field('a.name as a_name , b.*,c.&,d.*')
->select();

a.name as a_name意思就是把a表中的name字段换成a_name去显示出来。b.*代表的是取b表中的全部数据。

相关推荐
AC赳赳老秦1 小时前
司法公开数据采集应用:OpenClaw 抓取裁判文书公开信息,批量整理同类参考案例
java·大数据·python·数据挖掘·数据分析·php·openclaw
通玄2 小时前
Jetpack Compose 入门系列(十):Paging 3 分页加载
android
hunterandroid2 小时前
DataStore 工程化实践:迁移、并发更新与异常恢复
android·前端
EasyGBS3 小时前
ONVIF设备接入国标GB28181视频平台EasyGBS:不用国标也能一键拉流!
服务器·php·音视频
柒星栈4 小时前
PHP 源码怎么加密防破解?三套方案实战指南
开发语言·php·android studio
程序员-珍4 小时前
报错下载android sdk失败
android·java
小小代码狗4 小时前
SQLi-Labs 基础注入实战教程(Less-1 ~ Less-5and Less-9)
服务器·python·php
齊家治國平天下5 小时前
AAOS 电源管理深度解析:休眠/唤醒/功耗优化
android·车载系统·aaos·aosp·电源管理·休眠唤醒·carpowermanager
shencz20006 小时前
在windows10里的apache2.4加php7.2的环境下上安装Laravel5.8框架
php·laravel
Xzaveir6 小时前
企业号码展示不可观测怎么办:状态机、拨测事件与异常回放
android·人工智能