Для первой проблемы вы можете использовать Laravel tap()
вспомогательную функцию, например,
tap(CompanyProduct::where('subscription_id', $stripeSub->id)->first(), function (CompanyProduct $companyProduct) use ($stripeSub) {
$companyProduct->update([
'subscription_status'=>2,
'subscription_end_datetime'=>Carbon::parse($stripeSub->current_period_end)->format('Y-m-d H:i:s')
]);
});
она вернет обновленный объект, вы можете прочитать о Tap
Другое решение
$updatedCompProd = CompanyProduct::where('subscription_id', $stripeSub->id)->first();
$updatedCompProd->update([
'subscription_status'=>2,
'subscription_end_datetime'=>Carbon::parse($stripeSub->current_period_end)->format('Y-m-d H:i:s')
]);
dd($updatedCompProd); // it will work also,