Laravel Eloquent ORM Where 语句用于默认 created_at 时间戳的日期时间戳比较

Laravel Eloquent ORM Where Statements for Date Timestamp comparison on default created_at timestamp

所以我有这段代码希望能为我检索 Web 服务的一些视图。

 $records = Publication::all();

            if(isset($headers["input"]["from"])) {
                $from = Carbon::createFromFormat('Y-m-d', $headers["input"]["from"])->toDateTimeString();
                $records = $records->where("created_at", ">", $from);
            }

            if(isset($headers["input"]["until"])) {
                $until = Carbon::createFromFormat('Y-m-d', $headers["input"]["until"])->toDateTimeString();
                $records = $records->where("created_at", "<", $until);
            }

这应该 return 我在传递 2015-07-21 的 GET 参数时已经有一些出版物了......但它 return 没什么。我尝试测试以查看在代码之后执行 dd($results) 发生了什么,但是我尝试过的任何方式都一无所获。我尝试传递 ->get() 和 ->all() 但仍然一无所获。我什至尝试只调用方法而不是分配给同一个 $record 变量,尽管这对我来说没有意义,我一直在努力解决这个问题。

可能是 Sql 语句有问题?比较日期? Carbon 变量在 dd($until) 或 dd($from)

时看起来不错

编辑:因为我需要这个来工作,所以我探索了其他方法......我所做的是将 Publication::all() 转换为 Publication::query() (这会让你 QueryBuilder )然后我工作使用 Query Builder ->where(field,comparison,value) 最后使用 $records->get(); 检索结果;这样你仍然会得到模型集合,因为如果你使用 DB::table('publications') 然后当你做 ->get() 时使用相同的代码你只会得到元素数组而没有关系加载就像在模型中一样。希望我表达了我的观点并解释得很好。对不起,如果我没有。我真的尽力了。现在已解决!

因为我需要这个来工作,所以我探索了其他方法...我所做的是将 Publication::all() 转换为 Publication::query() (这将为您提供 QueryBuilder )然后我使用 Query Builder ->where(field,comparison,value) 然后最后用 $records->get(); 检索结果;这样你仍然会得到模型集合,因为如果你使用 DB::table('publications') 然后当你做 ->get() 时使用相同的代码你只会得到元素数组而没有关系加载就像在模型中一样。希望我表达了我的观点并解释得很好。对不起,如果我没有。我真的尽力了。现在已解决!