php - Laravel MySQL : translating SQL queries to Laravel Eloquent

标签 php mysql eloquent

我正在尝试为我的调度系统获取可用时间。我知道如何使用普通 SQL 查询来完成此操作,但在将查询转换为 Laravel Eloquent 时遇到问题。我的查询如下所示

$query =  "SELECT * FROM schedules WHERE (time_start BETWEEN '$start_datetime' AND '$end_datetime') OR (time_endBETWEEN '$start_datetime' AND '$end_datetime')";

这是迄今为止我对 laravel eloquent 所做的尝试

$sch = DB::table('schedules')
                ->where(function ($query) {
                    $query->whereBetween('time_start', [$start_datetime, $end_datetime]);
                })
                ->orWhere(function($query){
                    $query->whereBetween('time_end', [$start_datetime, $end_datetime]);
                })->get();

有什么正确的想法吗?我的 laravel Eloquent 查询出现错误 undefined variable :start_datetime

谢谢

最佳答案

您需要使用use将变量调用到闭包范围

$sch = DB::table('schedules')
                ->where(function ($query) use ( $start_datetime,$end_datetime) {
                    $query->whereBetween('time_start', [$start_datetime, $end_datetime]);
                })
                ->orWhere(function($query) use ( $start_datetime,$end_datetime){
                    $query->whereBetween('time_end', [$start_datetime, $end_datetime]);
                })->get();

关于php - Laravel MySQL : translating SQL queries to Laravel Eloquent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46252470/

相关文章:

mysql - 使用 'concat' 和 'where' 执行 sql 查询很慢

php - 是否可以将 tinyInteger 或 smallInteger 添加到 laravel ORM 的增量中?

pdf - 如何在使用 PHP 输出 HTML 时在 HTML 中设置函数

php - 在 mysql 和 php 中的真实排名

php - 在 php 中从数据库创建一个具有未知数量值的下拉列表

php - 从不同的文件和目录自动加载类和函数

php - 使用 PHP 和 MySQL 的剩余时间

mysql - 根据日期名称每天备份mysql数据库

laravel - 在 Laravel 查询范围内查询相关模型

laravel - 如何将 json 转换为 Laravel Eloquent 模型?