Запрос Laravel заменяет новые данные старыми

Basically this question is following of [link]

As that question got too messy I want to separate the question here.

Объяснение

Я добавил строки в свой клинок, где будет добавлено несколько полей выбора, и я могу выбрать параметры каждого из них. эти данные сохранятся в базе данных (Пока здесь все хорошо)

Проблема

приходит, когда я изменяю один из выбранных мной параметров, и вместо обновления он добавляет все выбранные как новые.

Скриншот 1

Запрос Laravel заменяет новые данные старыми

Код

controller

public function spacssendto(Request $request) {
        $this->validate($request, array(
          'product_id' => 'required',
          'subspecifications' => 'required',
        ));

        // get all selected option
        $looped = $request->subspecifications;
        $spec = [];
        if (!empty($looped)){ //check if there is any select box without option
          foreach($looped as $sub) {
              $sub = Subspecification::find($sub);
              if (!empty($sub->id)) {
                  $data = (
                    [
                      'product_id' => $request->product_id,
                      'subspecification_id' => $sub->id,
                    ]
                  );
                  array_push($spec, $data);
              }
          }
      }
      dd($spec);
    //   DB::table('product_subspecification')->insert($spec); // save data to database
    }

Скриншот 2

результаты dd($spec)

Запрос Laravel заменяет новые данные старыми

Любая идея?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
0
628
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Решено

Я изменил свою функцию на код ниже, и теперь все работает нормально

public function spacssendto(Request $request) {
        $this->validate($request, array(
          'product_id' => 'required',
          'subspecifications' => 'required',
        ));
        $collection = collect($request->subspecifications)->map(function ($name) {
            return strtoupper($name);
        })
        ->reject(function ($name) {
            return empty($name);
        });
      $product = Product::find($request->product_id);
      $product->subspecifications()->sync($collection);
    }

Надеюсь, это поможет другим.

На это потребуется 2 дня.

mafortis 20.09.2018 06:06

Другие вопросы по теме