php – Laravel Collection日期比较
发布时间:2020-12-14 19:49:09 所属栏目:大数据 来源:网络整理
导读:好吧所以我一直在寻找答案的时间,但似乎找不到答案. 我在不同的日期都有一系列“订单”.我得到了本周的所有订单,这不应该是一个问题,然后我想要一周的每一天的标签. 到目前为止我尝试过的是: $dinnerOrders-where('date','',$date)-where('date','',$date-e
好吧所以我一直在寻找答案的时间,但似乎找不到答案.
我在不同的日期都有一系列“订单”.我得到了本周的所有订单,这不应该是一个问题,然后我想要一周的每一天的标签. 到目前为止我尝试过的是: $dinnerOrders->where('date','>',$date)->where('date','<',$date->endOfDay())->sortBy('created_at'); $date是: $dt = CarbonCarbon::create()->startOfWeek(); CarbonCarbon::setTestNow($dt); $date = new CarbonCarbon('this ' . $day); 并且$dinnerOrders得到: $dinnerOrders = collect([]); foreach($restaurant->dinners as $dinner) { foreach($dinner->orders as $order) { $dinnerOrders[$order->id] = $order; } } 日期似乎正确,它在sql中的单词.这不起作用因为$dinnerOrders是一个集合吗? 我得到的是什么,即使它在mysql终端工作,空集. 所以我要问的是,你能否对一个系列进行日期比较?如果是这样,怎么样?
正如您在问题中所述,$dinnerOrders是一个集合,而不是一个查询. Collection上的where()方法的工作方式略有不同.
对于集合,where()方法不接受运算符.它只进行相等比较.第一个参数是键,第二个是值,第三个是布尔值来标记松散比较(==)与严格比较(===). 您正在寻找的是filter()方法.你传递一个Closure进行你的日期比较.如果Closure返回true,则该项目将保留在Collection中.如果返回false,则从集合中删除该项.像这样的东西(只是一个例子,逻辑可能需要调整): $dinnerOrders = $dinnerOrders->filter(function ($item) use ($date) { return (data_get($item,'date') > $date) && (data_get($item,'date') < $date->endOfDay()); }); 发布问题编辑 根据你编辑中提供的代码,我猜一家餐馆有很多晚餐,晚餐有很多订单.如果这是正确的,您可以建立一个关系,表明餐厅通过晚餐有多个订单: Restaurant.php: public function orders() { // restaurant has many orders through dinners $this->hasManyThrough('AppOrder','AppDinner'); } 通过此关系设置,您可以使用查询构建器获取您的信息: $dinnerOrders = $restaurant->orders()->where('date',$date->endOfDay())->get(); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- perl – 网格工具路径问题
- go语言在请求http时加入自定义http header的方法
- Perl 学习笔记(4)
- Beauty of Data Visualization - MS Power BI
- 找不到404:Angular 2无法与Spring Rest API对话
- ThinkPHP 6.0 管道模式与中间件的实现分析
- delphi – 为什么Synopse连字符代码会给出与TeX不
- delphi遇到的一个实参错误(Format ‘%1’ inval
- Delphi 与 DirectX 之 DelphiX(17): TPictureCol
- leetcode 70. 爬楼梯(Climbing Stairs)
热点阅读