这是我的方案,我有2个表Orders
和Employees
。它们有很多关系,所以有一个数据透视表来连接它们。 Order
表包含一些字段,例如date
,in_time
,oute_time
等。
现在我想让所有员工在本周内获得订单。我可以用
轻松完成$orders = Order::with(['employees'])
->currentWeek($fromDate, $tillDate)
->get()
->groupBy('date');
此处currentWeek
是scope
,其中计算了日期范围。我需要做的是与同一日期所有orders
的员工建立嵌套关系,例如
$orders = Order::with(['employees' => function ($q) {
$q->with(['orders' => function ($q) {
$q->where('child_order.date', '=', 'parent_order.date');
}]);
}])->currentWeek($fromDate, $tillDate)->get()->groupBy('date');
如何在嵌套?
中访问parent orders columns
实施例:
Order
表包含2个字段in_time
和out_time
。我的目的是在一周内列出所有订单,并让所有已添加到订单的员工。同时,我需要确定员工是否已添加到订单 in_time / out_time 冲突。比如,我在 dec-22 上有一个订单,从 3-30pm 开始,到晚上9:30 结束。现在,我需要列出该订单的所有员工,并列出与日期匹配的每个员工的所有订单,并且属于` in_time / out_time
答案 0 :(得分:0)
这可能无法为您提供您想要的确切答案,但是您是否尝试使用Employee模型解决问题?如果您要使用员工的模型及其订单关系,您可以查询它。像这样
$orders = Employee::with('orders')
->whereHas(['orders' => function ($q) {
$q->where('date', '<', $tillDate);
$q->where('date', '>', $fromDate);
})->get();
这也意味着您需要在Employees模型上拥有hasMany关系,如此
员工模型
public function orders()
{
return $this->hasMany(Order::class);
}
根据您在评论中描述的情景,这将为您提供5名员工的集合,以及他们在日期之间所做的任何订单。