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