我正在尝试获取给定日期范围内的数据库值。问题是,我也在尝试获得缺失的值。如果我有第1天和第3天的值,而我要求第1-5天的值,我想得到以下内容:

1->值

2-> NULL / 0

3->值

4-> NULL / 0

5-> NULL / 0

好的,我知道如何仅使用MySQL和左联接中的此临时表解决此问题:

(select adddate('1970-01-01',t4.i*10000 + t3.i*1000 + t2.i*100 + t1.i*10 + t0.i) selected_date from
    (select 0 i union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union  select 8 union select 9) t0,
    (select 0 i union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t1,
    (select 0 i union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t2,
    (select 0 i union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t3,
    (select 0 i union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t4) v


不幸的是,我不确定如何将其包含在雄辩的ORM中。
目前,我在想这样的事情:

$weekclockings = $shift->clockings()->leftJoin(function($query)
{
    $query->raw($aboveQuery);
}, "v.selected_date", ">", "timeclocked.time_in")


但这无法正常工作,只是给我“ Grammar.php第33行中的ErrorException:类Closure的对象无法转换为字符串”。

因此,这可能甚至不是最佳方法。有谁知道如何实现这一目标?

最佳答案

我不知道这里的clockings()是什么-可能是作用域,但是要在连接中使用原始SQL,应使用:

$weekclockings = $shift->clockings()->leftJoin(\DB::raw($aboveQuery), "v.selected_date", ">", "timeclocked.time_in");

关于php - Laravel:日期之间的零值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29133681/

10-11 03:18
查看更多