thinkphp多表查询

本文介绍了在ThinkPHP框架中进行多表查询的方法,包括使用table和join进行多表连接的操作。table方法通过where条件实现两个表的关联,而join则提供了inner join、left join和right join等多种方式。示例代码展示了如何在实践中应用这些方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.table多表连接:
语法:select 表1.字段,表2.字段, from 表1 as[别名1],表2 as[别名2] where 表1.字段=表2.字段。这其中就是通过where来进行两个表的关联操作。
代码如下:

    public function test()
    {
       $model=model('User');//实例化模型
       $result=$model->table('think_user user,think_role role')-   >field(user.*,role.id,role.name)->where(user.id=role.id)->select();
    }

其中table中有两个参数:第一个参数是数据表的名称,第二个参数是数据表的别名。
2.join多表连接:
join有下面几种类型:
inner join:内操作,如果表中至少有一个匹配,则返回行,等同于join,
left join:外操作:即使右表无匹配,则从左表中返回所有行,
right join:外操作,即使左表中无匹配,则从右表中返回所有行
full join: 只要其中一个表中存在匹配,就返回行
join主要有三种写法:
写法1:[ ‘完整表名或者子查询’=>’别名’ ]
写法2:’完整表名 别名’
写法3:’不带数据表前缀的表名’
join多表查询默认是inner join,这里说的是left join,代码如下:

$data=Db::name('zhwy_xdrcom')->alias('a')->join('zhwy_member b','a.manage_id = b.id','LEFT')->field("a.*,b.username,b.mobile")->where(['a.delete'=>1])->order(["a.id" => "DESC"])->paginate(15);

3.原生多表查询:

$user =  Model('模型名称');
$sql = 'select p.*,q.username from think_test1 as p, think_test2 as q where p.id=q.id order by p.id;
$res = $user->query($sql);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值