Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

144
Vistas
Cómo hacer una clase separada para hacer un nuevo registro en la mesa y llamarlo a través de una interfaz o una fachada en el controlador

Quiero refactorizar mi código de controlador que está creando un nuevo registro en los products de la tabla:

 public function store(Request $request) { $newPro = Product::create([ 'name' => $request->product_name, 'en_name' => $request->product_name_english, 'type' => $request->product_type, 'cat_id' => $request->category_product, ]); ... }

Ahora, para refactorizar este código, tengo dos opciones:

1- Cree un método separado en el mismo controlador y luego llámelo así:

 $newPro = self::createProduct($request->product_name,$request->product_name_english,$request->product_type,$request->category_product)

2- Cree una Clase separada y llámela por la interface o facade (Mejor manera)

Ahora quería usar la segunda opción, ¡pero realmente no sé cómo hacerlo!

Así que si sabes por favor házmelo saber...

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Primero cree su proveedor de servicios de repositorio:

 php artisan make:provider RepositoryServiceProvider

luego debe asignar la interfaz y su repositorio (por supuesto, debe crear ProductRepository y ProductRepositoryInterface también) dentro del método de registro como:

 /** * Register services. * * @return void */ public function register() { $this->app->bind(ProductRepositoryInterface::class, ProductRepository::class); }

después de eso, puede inyectar su repositorio en su controlador como:

 public function store(Request $request, ProductRepositoryInterface $productRepository) { $newPro = $productRepository->createProduct($productData); ... }

Aquí está su repositorio de productos :

 <?php namespace App\Repositories; class ProductRepository extends BaseRepository implements ProductRepositoryInterface { protected Product $product; /** * @param Product $product */ public function __construct(Product $product) { $this->product = $product; } /** * @param array $productArray * @return Product */ public function createProduct(array $productArray): Product { return $this->product->create($productArray); } }

y su ProductRepositoryInterface:

 <?php namespace App\Repositories; interface CategoryRepositoryInterface { /** * @param array $productArray * @return Product */ public function createProduct(array $productArray): Product; }
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda