wbright1234
2 weeks ago

laravel collection prevent duplicate entries in database

Posted 2 weeks ago by wbright1234

Hi All I have a collection which is save in a the database, the problem is that there ids are duplicated on save, what i need is to save how do I save just on Id for each product. below is a sample code from my controller

	public function storeCheck(Request $request)
	{
		$ids = collect($request->ids);
		$quantities = collect($request->quantities);
		if ($ids->count() === 0 || $quantities->count() === 0) 
		{
			return redirect()->back()->with('error', 'Заполните чек товаром!');
		}


		$productsIdsToSell = Collection::make();

		foreach ($ids as $index => $id) 
		{
			$productsIdsToSell[$id] = $quantities[$index];
		}
		$productsIdsToSell = $productsIdsToSell->sort();
		$products = Product::query()->whereIn('id', array_keys($productsIdsToSell->toArray()))->get();


		foreach ($products as $index => $product) {
			$actualProductQuantity = $product->batches->sum(function (Batch $batch) {
				return $batch->quantity;
			});

			$productQuantity = floatval($productsIdsToSell[$product->id]);
			//dd($productQuantity);

			if ($actualProductQuantity < $productQuantity) {
				return redirect()->back()->with('error', 'Количество товара на продажу указано больше, чем есть в базе');
			}

foreach ($product->batches as $batch) 
{
$soldProducts->push(SoldProduct::query()->make([
'product_id' 		=> $batch->product->id,
'measure_id' 		=> $batch->product->measure->id,
'manufacturer_id' 	=> $batch->product->manufacturer->id,
'type' 				=> $batch->product_type,
'purchase_price'	=> $batch->price * 100,
'selling_price'		=> $batch->product->price * 100,
'cash_desk_id'		=> 1,
'check_id'			=> $check->id,
'quantity'			=> $productQuantity
]));
}
	
$soldProducts->each(function (SoldProduct $product) {

			$product->save();
});
$request->session()->flash('status', 'Товар продан успешно!');
return redirect()->back();
	}

I think what I need to do is to save unique id so that there is no duplicate id

$soldProducts->each(function (SoldProduct $product) {$product->save();});

Please help

Please sign in or create an account to participate in this conversation.