2016-12-22 2 views
0

Вот мой сценарий, у меня есть 2 таблицы Orders и Employees. У них много отношений, поэтому для их подключения есть сводная таблица. Order таблица имеет несколько полей, таких как date, in_time, oute_time и т.д.laravel нетерпеливая загрузка использования родителей значение столбца внутри вложенного отношения

Теперь я хочу, чтобы все сотрудники для заказов в течение текущей недели. Я могу сделать это легко с

$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 конфликтов. Например, у меня есть заказ на дес-22 который начинается в 3-30pm и заканчивается в 9-30pm. Теперь, мне нужно вывести список всех сотрудников для этого заказа и перечислить все заказы для каждого сотрудников, который соответствует даты и попадает в `IN_time/OUT_time

+0

У меня не возник вопрос, почему вы снова получаете «заказы» от «сотрудников», так как вы уже получаете «служащих» из «заказов»? –

+0

Как 'порядок' на' dec-22' имеет '5 сотрудников'. Теперь я хочу получить все «заказы» этих 5 'сотрудников' на' dec-22'. – shoieb0101

ответ

0

Это не может дать вам точный ответ ваш но вы пытались приблизиться к проблеме с использованием модели Employee? Если бы вы использовали модель сотрудника и отношения с его заказами, вы могли бы просто запросить это. Как и

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

Это также означает, что вам нужно иметь отношения hasMany на модели сотрудников, как так

модель Сотрудник

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

Учитывая ваш сценарий вы описали в комментариях, это будет дать вам коллекцию с 5 сотрудниками и любые заказы, которые они сделали между датами.

+0

Таблица 'Order' имеет 2 поля,' in_time' и 'out_time'. Моя цель - перечислить все «заказы» в течение недели и получить всех сотрудников, которые были добавлены в «заказ». В то же время мне нужно определить, добавлен ли 'employee' в' order', конфликты 'in_time/out_time'. Например, у меня есть 'order' на' dec-22', который начинается с '3-30pm' и заканчивается на' 9-30pm'. Теперь мне нужно перечислить всех сотрудников для этого заказа и перечислить все «заказы» для этого сотрудника, которые соответствуют «дате» и попадают в 'in_time/out_time' – shoieb0101

 Смежные вопросы

  • Нет связанных вопросов^_^