Еще как вариант можно сразу создавать заготовку продукта и отдавать её в методе create
public function create(Product $product)
{
if (! $product->exists) {
$product = $this->createAndReturnSkeletonProduct(); //создаешь в методе заготовку, с нужными тебе полями
return redirect()->route('products.create', $product);
}
return view('products.create', compact('product')]);
}
// И пару роутов ведущих в один метод контроллера:
Route::get('products/create', 'ProductController@create')->name('products.create.start');
Route::get('products/{product}/create', 'ProductController@create')->name('products.create');
И у тебя всегда будет товар создаваться раньше до его связей.
Заготовки периодически подчищать.