用tp6写一个多表查询
时间: 2023-12-29 12:47:41 浏览: 150
ThinkPHP的多表查询
3星 · 编辑精心推荐
假设我们有两个表:`users` 和 `orders`,它们之间有一对多的关系,即一个用户可以有多个订单。现在我们要查询所有的用户及其对应的订单信息。
可以使用ThinkPHP6的Query对象来实现多表查询,具体步骤如下:
1. 在 `app\model` 目录下创建 `User` 和 `Order` 模型类,并添加表名和主键属性:
```php
namespace app\model;
use think\Model;
class User extends Model
{
protected $table = 'users';
protected $pk = 'id';
}
class Order extends Model
{
protected $table = 'orders';
protected $pk = 'id';
}
```
2. 在控制器中调用 Query 对象的 `join` 方法和 `select` 方法,构建多表查询语句:
```php
namespace app\controller;
use app\model\User;
use app\model\Order;
use think\facade\Db;
class UserController
{
public function index()
{
$query = Db::table('users')
->alias('u') // 别名
->join('orders o', 'u.id = o.user_id', 'left') // 多表关联
->field('u.*, o.order_no, o.amount') // 查询字段
->select(); // 查询结果
return json($query);
}
}
```
在上面的代码中,我们通过别名 `u` 来代替 `users` 表,在多表关联时使用了左连接(`left`),并且只查询了用户表和订单表的部分字段。
这样就能够查询出所有的用户及其对应的订单信息了。
阅读全文