У меня есть форма, где я отправляю несколько значений. Это динамическая форма, где поля различаются каждый раз, но на количество полей, а не на сами поля. Я использую следующее, чтобы вставить все данные в сводную таблицу, однако я вряд ли думаю, что это хороший способ обойти это. Есть ли хороший способ сделать это без использования foreach? Прямо сейчас только для 3 exercises
Я делаю 12 запросов? XDLaravel sync несколько дополнительных динамических значений
Сводная таблица выглядит следующим образом:
CREATE TABLE `exercise_training` (
`id` int(10) UNSIGNED NOT NULL,
`exercise_id` int(10) UNSIGNED NOT NULL,
`training_id` int(10) UNSIGNED NOT NULL,
`exercise_set` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`exercise_repeat` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`exercise_weight` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`exercise_time` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`created_at` timestamp NULL DEFAULT NULL,
`updated_at` timestamp NULL DEFAULT NULL
)
А вот код:
$checkedSets = $request['exercise_sets']; // Array of `set` values where the `key` is the `exercise_id`
$checkedRepeats = $request['exercise_repeats'];// Array of `repeat` values where the `key` is the `exercise_id`
$checkedWeights = $request['exercise_weights'];// Array of `weight` values where the `key` is the `exercise_id`
$checkedTimes = $request['exercise_times'];// Array of `time` values where the `key` is the `exercise_id`
foreach($checkedSets as $key => $value)
{
$training->exercises()->syncWithoutDetaching([$key => ['exercise_set' => $value]]);
}
foreach($checkedRepeats as $key => $value)
{
$training->exercises()->syncWithoutDetaching([$key => ['exercise_repeat' => $value]]);
}
foreach($checkedWeights as $key => $value)
{
$training->exercises()->syncWithoutDetaching([$key => ['exercise_weight' => $value]]);
}
foreach($checkedTimes as $key => $value)
{
$training->exercises()->syncWithoutDetaching([$key => ['exercise_time' => $value]]);
}
Спасибо, я попробовать это уже, но без успеха , но может быть, я делал это неправильно. Я не заглядывал в это какое-то время, я проверю его позже позже :) – Hardist