Вы можете использовать отношения Laravel многие ко многим для достижения этой функциональности:
Модель счета
public function products()
{
return $this->belongsToMany('App\Product', 'invoice_products');
}
Модель продукта
Хотя здесь это и не требуется, но вы можете использовать это для получения счета на сопутствующие товары.
public function invoices()
{
return $this->belongsToMany('App\Product', 'invoice_products');
}
Для обновления существующих данных вы можете использовать метод sync
:
$products = [1, 2, 3, 4];
$invoice->products()->sync($products);
Вы можете узнать больше об отношениях более https://laravel.com/docs/5.7/eloquent-relationships