Красноречивое дублирование строк при сохранении в базу данных - laravel - PullRequest
0 голосов
/ 30 августа 2018

У меня возникает эта проблема, когда при сохранении в базе данных строка дублируется, даже если массив содержит одну позицию индекса. Я что-то здесь упускаю?

 foreach($params['service'] as $key => $value){
    $data['name'] = $value;
    $data['price'] = $params['price'][$key];  
    $data['business_id'] = $params['business_id'];
    $service = new  Service($data);
    $service->save();
}

данные $ params

array:5 [▼
  "business_id" => "1"
  "service" => array:1 [▼
    0 => "web development"
  ]
  "price" => array:1 [▼
    0 => "R4500"
  ]
  "submit" => null
]

это дубликаты

1   web development     R4500   1   2018-08-30 07:24:34     2018-08-30 07:24:34
2   web development     R4500   1   2018-08-30 07:24:34     2018-08-30 07:24:34

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

array:5 [▼
  "business_id" => "1"
  "user_id" => "1"
  "service" => array:3 [▼
    0 => "web development"
    1 => "mobile development"
    2 => "internet marketing"
  ]
  "price" => array:3 [▼
    0 => "R4500"
    1 => "R8900"
    2 => "R5600"
  ]
  "submit" => null
]

вот полная функция

 public function createService(array $params) : Service
{
  // dd($params);
    try {
      foreach($params['service'] as $key => $value){
        $service = new Service();
        $service->service = $value;
        $service->price = $params['price'][$key];
        $service->business_id = $params['business_id'];
        $service->save();
    }
      return $service;

    } catch (QueryException $e) {
        throw new CreateServiceInvalidArgumentException($e->getMessage(), 500, $e);
    }

  }

Ответы [ 2 ]

0 голосов
/ 30 августа 2018

В эти моменты я хочу дать себя пощечину за глупость ... Я просто заметил, что посылаю те же данные через ajax ... Должно быть, я забыл, что сделал это. Спасибо всем за то, что нашли время взглянуть на это для меня.

0 голосов
/ 30 августа 2018

Попробуйте следующий простой способ:

foreach($params['service'] as $key => $value){
    $service = new Service();
    $service->name = $value;
    $service->price = $params['price'][$key];
    $service->business_id = $params['business_id'];
    $service->save();
}

Я надеюсь, что это работает нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...