$catalogItems */ public function attach(Collection $catalogItems, ?int $userId): void { $remaining = $this->purchaseLimits->remainingByCatalogItem($catalogItems, $userId); foreach ($catalogItems as $catalogItem) { $catalogItem->setAttribute( 'remaining_user_quota', $remaining->get($catalogItem->getKey()), ); } } public function maximumAddableQuantity(?int $availableStock, ?int $remainingUserQuota): ?int { if ($availableStock === null) { return $remainingUserQuota; } if ($remainingUserQuota === null) { return $availableStock; } return min($availableStock, $remainingUserQuota); } }