我正在尝试部署我的Laravel(4.1)应用程序,我遇到了与MySQL正常工作的问题。我已经把它缩小到这条线了......
$curSessions = DB::table('sessions')->where('beginDate', '<', $curDate)->where('endDate', '>', $curDate)->get();
我尝试将此更改为以下内容并按预期返回。 (但显然记录太多了)
$curSessions = DB::table('sessions')->where('beginDate', '<', $curDate)->get();
这不起作用。它不返回任何错误和一个空数组。
$curSessions = DB::table('sessions')->where('endDate', '>', $curDate)->get();
然后,当我在phpMyAdmin的SQL框中输入它时,我得到它以回应它所做的最后一个语句(DB::getQueryLog();
)和它输出的查询。
要清楚。查询日志显示:
array(1){[0] =&gt; array(3){[“query”] =&gt; string(64)“select * from
sessions
wherebeginDate
&lt;?andendDate
&gt;?” [ “绑定”] =&GT; array(2){[0] =&gt; string(8)“2014-1-3”[1] =&gt; string(8)“2014-1-3”} [“time”] =&gt; float(0.26)}}
当我将'2014-1-3'插入“?”时有用。
摩擦是......这适用于运行MAMP的计算机,但不适用于远程服务器。我检查了数据库结构,以确保endDate
和beginDate
都设置为“日期”,并且它们是。
任何的想法?
答案 0 :(得分:0)
您只需要确保包含前导0(作为matpop建议)。
答案 1 :(得分:0)
首先,您应该检查您的表日期类型是否与您查询的内容相同。 例如,如果您的表beginDate列是时间戳,那么您的$ curDate变量应该是timestamp的实例。这样做你可以做到:
$curDate = Carbon::createFromDate("year", "month", "day");
然后你可以使用如下所示的雄辩内置的laravel:
$curSessions = Sessions::where('beginDate', '<', $curDate)
->where("endDate", ">", $curDate)->get();
仅供参考:还有另一个运营商可以使用whereBetween
进行日期时间检查,我在这里举一个示例,以便检查它是否能完成您的工作。
$curSessions = Sessions::whereBetween('beginDate', array($beginDate, $endDate))->first();