Мне нужно распределить несколько встреч в календаре, просматривая сотрудников, день и час.
Первый вариант Я сделал это во внешнем интерфейсе, как это. Используя ELOQUENT в бэк-энде
У меня есть цикл внутри цикла, как вы могли видеть здесь:
@for($i = 8; $i <= 17; $i++) // This are the hours. From 9:00 hour to 17:00 hour (German hour format)
@foreach($employee->appointments as $appointment) // I take the appointment of each employee
@if( $appointment->date->translatedFormat('D j M') != today()->translatedFormat('D j M'))
@continue //if the appointment is not from today, continue
@else
@if( $appointment->date->format('H') != $i )
<h3> <a href="link_to_create_appointment_form">Add an appointment</a></h3>
// insert a link to create a new apppointment
@else
// insert the Appointment
@endif
@endif
@endforeach
@endfor
Но после вставки первого назначения (Назначение == сегодня && now ()), foreach переходит к следующей встрече, но начинается с начала.
В конце, если у меня назначена встреча в 9:00, а другая в 10:00, я получаю следующее:
- 8: 00 - добавить встречу
- 09: 00 - НАЗНАЧЕНИЕ 1
- 8: 00 - добавить встречу
- 9: 00 - добавить встречу
- 10: 00 - НАЗНАЧЕНИЕ 2
Второй вариант - это использование фасада БД и СОЕДИНЕНИЕ нескольких таблиц (встречи, клиенты, сотрудники и часы работы).
Это приводит к более быстрому решению за один цикл.
Проблема в том, что DB Facade не позволяет использовать Carbon, и я получаю следующую ошибку:
{{ $appointment->date->format('H:i') }}
Этомой запрос:
$todayAppointments = DB::table('appointments')
->leftJoin('clients', 'appointments.client_id', '=', 'clients.id')
->leftJoin('employees', 'employees.user_id', '=', 'employees.id')
->leftJoin('users', 'appointments.employee_id', '=', 'users.id')
->whereDay('appointments.date', today())
->selectRaw(
'users.id AS id,
users.firstname AS employee,
clients.firstname AS clientname,
clients.lastname AS clientlastname,
clients.lastname AS clientlastname,
clients.gender_id AS clientgender,
appointments.duration AS duration,
appointments.date AS date'
)
->groupBy('users.id', 'clients.id', 'appointments.id')
->orderBy('date', 'ASC')
->get();
ВОПРОС: Как я могу преобразовать результат фасада БД в формат Carbont, чтобы сделать что-то вроде этого:
$appointment->date->format('H') != $i
Я пробовал весь день, используя @loop, @index, но безуспешно.