【发布时间】:2016-02-21 18:00:50
【问题描述】:
好的,所以我一直在寻找答案,但似乎找不到答案。 我有一系列不同日期的“订单”。我得到了本周的所有订单,这应该不是问题,然后我想为一周中的每一天创建一个标签。
到目前为止我尝试过的是:
$dinnerOrders->where('date','>',$date)->where('date','<', $date->endOfDay())->sortBy('created_at');
$date 在哪里:
$dt = Carbon\Carbon::create()->startOfWeek();
Carbon\Carbon::setTestNow($dt);
$date = new Carbon\Carbon('this ' . $day);
$dinnerOrders 的获取方式是:
$dinnerOrders = collect([]);
foreach($restaurant->dinners as $dinner) {
foreach($dinner->orders as $order) {
$dinnerOrders[$order->id] = $order;
}
}
日期似乎是正确的,并且它在 sql 中显示。这不工作是因为 $dinnerOrders 是一个集合吗?
我得到的是什么,即一个空集,尽管它在 mysql 终端中工作。
所以我要问的是,你能对一个集合进行日期比较吗?如果有,怎么做?
【问题讨论】:
-
您可能没有正确构建整个查询,并且您只发布了一个看起来不错的部分。因此,不要使用
get()来检索您的结果,而是使用toSql(),这将返回一个字符串,其中包含查询生成器正在构建和运行的SQL 查询。这与您手动运行的匹配吗? -
我会检查正在执行的查询。在执行查询后放置此代码并检查执行的 sql beding:dd(DB::getQueryLog())(要使用 DB,您应该导入它:use Illuminate\Support\Facades\DB;)
-
@Bogdan toSql() 不起作用,因为 $dinnerOrders 是一个已经被 sql 检索到的集合,抱歉应该更清楚。已更新原始问题。
-
我的错,你很清楚这是原始问题的集合,我只是错过了这个事实。
标签: php laravel laravel-5 php-carbon laravel-collection