2017-01-12 10 views
0

У меня есть форма, где я отправляю несколько значений. Это динамическая форма, где поля различаются каждый раз, но на количество полей, а не на сами поля. Я использую следующее, чтобы вставить все данные в сводную таблицу, однако я вряд ли думаю, что это хороший способ обойти это. Есть ли хороший способ сделать это без использования 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]]); 
    } 

ответ

1

От laravel documentation

You may also pass additional intermediate table values with the IDs: 

$user->roles()->sync([1 => ['expires' => true], 2, 3]); 
+1

Спасибо, я попробовать это уже, но без успеха , но может быть, я делал это неправильно. Я не заглядывал в это какое-то время, я проверю его позже позже :) – Hardist

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

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