У меня есть следующий метод:
public function getBookings (Request $request) {
$bookings = Bookings::where('client_department_id', '=', $request->segment(3))
->where('status', '=', $request->segment(5))
->with(['clientsDepartments' => function($query) {
$query->select(
'client_department_id',
'department_name'
)
->with(['bookingsClientsOptions' => function($query) {
$query->with(['bookingsClientsOptionsData' => function($query) {
$query->select(
'booking_attendee_id',
'value'
)
->orderBy('creation_date', 'desc');
}])
->orderBy('bookings_client_option_id', 'desc');
}])
->orderBy('department_name', 'desc');
}])
->orderBy('creation_date')
->take(10)
->get();
return BookingsResource::collection($bookings)->response();
}
Здесь bookingsClientsOptions
- это n количество строк, определяющих параметры клиента, а bookingsClientsOptionsData
- это сами значения.
Однако пользователю не требуется вводить значения для каждой из опций клиента, чтобы, например, у опции 1 и 2 клиента могли быть значения, а у 3 - нет, у 4 - нет, а у 5 - нет. «т.
Мне нужно извлечь существующие значения и либо null , либо []
там, где их нет, чтобы заполнить пробелы.
Если вы посмотрите на графику, она создает массив bookings_clients_options
и массив bookings_clients_options_data
, в котором содержатся параметры клиента, но не помещает в него данные строки, несмотря на то, что оператор Eloquent генерирует извлекает правильные данные строки.
В соответствии с запросом, отношения в "app / BookingsClientsOptions.php":
public function clientsDepartments () {
return $this->belongsTo(
'App\ClientsDepartments',
'client_department_id'
);
}
public function bookingsClientsOptionsData () {
return $this->hasMany(
'App\BookingsClientsOptionsData',
'bookings_client_option_id'
)
->select([
'bookings_client_option_data_id',
'bookings_client_option_id',
'booking_attendee_id',
'value'
])
->orderBy('creation_date', 'desc');
}
... и "app / BookingsClientsOptionsData.php":
public function bookingsClientsOptions () {
return $this->hasOne(
'App\BookingsClientsOptions',
'bookings_client_option_id'
);
}
public function attendees () {
return $this->belongsTo(
'App\BookingsAttendees',
'booking_attendee_id'
);
}
* * 1030