Laravel查询返回问号而不是变量值


Laravel query returns question mark instead of variable value

当我点击一个按钮时,正在对我自己编写的API进行AJAX调用。单击按钮时,Javascript文件从单击的对象中检索两个data-属性,并将其与URL一起发送。这两个变量用于尚未执行的SQL语句的where子句。

当进行调用时,处理API请求的PHP-脚本通过Input::get('data-attribute-one'))Input::get('data-attribute-two'))接收这两个变量。当我输出这两个属性时,将显示正确的值。

然而,当我将变量放入查询的where子句时,如下所示:

$fans = Sensor::where('fan_number', '=', $dataAttributeOne)->where('created_at', '>=', $this->now->subHours(6))->get();

则不返回任何结果。所以我用->toSql()替换了->get()来检查查询,它给了我一行奇怪的代码:

Object {fans: "select * from "myawesomedatabasetable" where "fan_number" = ? and "created_at" >= ?"}

$dataAttributeOne是检索到的data-atribute$this->now->subHours(6)是当前时间减去6小时。当我输出它时,它的格式与数据库中的created_at值相同,当我用Phpmyadmin将它硬编码为SQL语句时,查询会像符咒一样执行。所以没有问题。

所以我的问题是:为什么当查询执行时,变量会变成问号?我该如何解决这个问题?

提前感谢!

toSql()就是这样工作的。此方法用于调试。

https://scotch.io/tutorials/debugging-queries-in-laravel