雄辩的laravel与where子句有原始连接

时间:2017-03-28 17:15:09

标签: mysql laravel eloquent

我有一段我需要改变的代码

->rightJoin('calendar', function($join) use ($machineName)
{
    $join->on('print_jobs.job_date', '=', 'calendar.datefield')
         ->where('machines.machine', '=', $machineName);
})

->rightJoin('calendar', function($join) use ($machineName)
{
    $join->on('DATE(print_jobs.job_date)', '=', 'calendar.datefield')
         ->where('machines.machine', '=', $machineName);
})

注意我正在将print_jobs.job_date从datetime更改为date。这工作正常,直到我将字段从日期更改为日期时间。

Eloquent不喜欢我在这里添加DATE。我不知道如何将原始连接字段放在这里。

1 个答案:

答案 0 :(得分:1)

这不是Eloquent,这是一个流畅的查询构建器,要清楚。接下来,问题是它不知道如何处理DATE(),因为它只需要一个字符串,而不是一个方法。要解决此问题,请使用数据库外观的raw()方法。我在下面列出了完整的命名空间,但您可以在文件顶部use,并简洁地引用DB::raw()

$join->on(Illuminate\Support\Facades\DB::raw('DATE(print_jobs.job_date)'), '=', 'calendar.datefield')