CustomerInvite::where("user_id", $value['id'])->whereExists(function ($query) use ($value, $start, $end) { $query->select(DB::raw(1))->from("customer")->where("first_user_id", $value['id'])->whereBetween('time', [$start, $end]); })->count()这样可以吗
时间: 2024-02-20 08:02:42 浏览: 124
CI框架中数据库操作函数$this-db-where()相关用法总结
是的,你可以使用 Laravel 的 Query Builder 来构建这个查询,使用 `whereExists` 方法来添加 EXISTS 子查询,使用 `select` 方法来选择一个 1 常量,使用 `from` 方法来指定子查询的来源表,使用 `where` 方法来添加 WHERE 子句。
下面是一个例子,假设你有一个 CustomerInvite 模型和一个 customer 表,CustomerInvite 模型有一个 user_id 字段,你想要查询 CustomerInvite 表中与 customer 表中 first_user_id 等于 User ID 并且时间在指定范围内的记录数量。
```
$invitesCount = CustomerInvite::where("user_id", $value['id'])
->whereExists(function ($query) use ($value, $start, $end) {
$query->select(DB::raw(1))
->from("customer")
->where("first_user_id", $value['id'])
->whereBetween('time', [$start, $end]);
})
->count();
```
在这个查询中,我们使用了 `whereExists` 方法来添加 EXISTS 子查询,使用 `select` 方法来选择一个 1 常量,使用 `from` 方法来指定子查询的来源表,使用 `where` 方法来添加 WHERE 子句,最后使用 `count` 方法来计算查询结果的数量。
需要注意的是,这个查询中使用了原始的 WHERE 子句,要确保它是安全的,避免 SQL 注入攻击。
阅读全文