некрасиво с точки зрения кода прежде, чем получать экземпляр модели сначала проверять его существование кодом if ( ProductImage::where('product_id', $product_id)->exists() ) { $currentProductImage = ProductImage::where('product_id', $product_id)->first(); ..... } или лучше сразу делать $currentProduct = ProductImage::where('prpduct_id', $product_id)->first(); if ( $currentProduct) { .... } ? в первом случае мы сначала проверяем есть ли такой элемент. а потом если есть получаем его и совершаем над ним действия. А во втором случае мы сразу пытаемся его получить и проверяем есть он или нет. с точки зрения красоты кода (алгоритма) мне кажется первый пример правильнее. но мы жертвуем дополнительным запросом к базе.
с точки зрения красоты кода это мог бы быть публичный метод ProductsService::getProductById, не говоря о репозитории в прослойке между сервисом. дальше в методе на выходе проверка типа инстанса продукта и строгая типизация на return, если инстанс не получен, то throw ProductNotFoundException. в клиенте сервиса будь то контроллер или команда или еще какой класс можно уже сделать эксепшн драйвен поведение
Обсуждают сегодня