2016-12-22 59 views
0

這裏是我的場景,我有2個表OrdersEmployees。他們有很多關係,所以有一個數據透視表來連接它們。 Order表有幾個字段,如date,in_time,oute_timelaravel渴望加載使用嵌套關係中的父列值

現在我想在本週內獲得所有員工的訂單。我可以

$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_timeout_time。我的目的是在一週內列出所有訂單,並獲得已添加到訂單的所有員工。同時,我需要確定員工是否已添加到訂單,其中in_time/out_time發生衝突。喜歡,我有一個訂單dec-22開始於下午3點30分並結束於9-30pm。現在,我需要列出所有員工的順序,並列出所有訂單爲其匹配的日期和`In_time的/ Out_time相當

+0

我沒有得到你的問題,爲什麼你再次從'employees'獲取'orders',因爲你已經從'orders'獲得'employees'了? –

+0

就像'dec-22'上的'訂單'有5名僱員。現在我想要得到'dec-22'上5位員工的所有'訂單'。 – shoieb0101

回答

0

之內的每個員工來說,這可能不是給你確切的回答你尋找,但您是否嘗試過使用Employee模型來解決問題?如果您要使用該員工的模型及其訂單關係,則可以查詢該關係。像這樣

$orders = Employee::with('orders') 
    ->whereHas(['orders' => function ($q) { 
     $q->where('date', '<', $tillDate); 
     $q->where('date', '>', $fromDate); 
    })->get(); 

這也意味着你需要有像這樣

員工模型

public function orders() 
{ 
    return $this->hasMany(Order::class); 
} 

鑑於您在註釋中描述的場景中,這將在員工模型的hasMany關係給你5個員工的集合,以及他們在日期之間作出的任何訂單。

+0

'訂單表'有2個字段,'in_time'和'out_time'。我的目的是在一週內列出所有的「訂單」,並獲得已添加到「訂單」的所有員工。同時,我需要確定'employee'是否被添加到'in_time/out_time'衝突的'order'。就像我在'dec-22'上有'訂單',開始於'3-30pm',結束於'9-30pm'。現在,我需要列出該訂單的所有員工,並列出該員工與「日期」匹配且落入「in_time/out_time」的所有「訂單」 – shoieb0101