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

264
Vistas
Cambiar un atributo de la colección Laravel Eloquent cambia cada referencia

Aquí está mi escenario. Tengo una relación entre suscripción y producto. Cada suscripción pertenece a algún producto y tengo relaciones definidas.

Ahora si hago esto: Subscription::with(['product', 'address'])->get(); Obtendré todas las suscripciones con el producto.

El producto tiene atributos como shipping_price, price, etc.

Ahora, si cambio shipping_price de un producto dentro de una suscripción, cambia shipping_price para ese producto dentro de todas las suscripciones (esto es útil muchas veces, pero esta vez no quiero que este cambio se refleje en todas partes).

Por ejemplo:

 $subscriptions = Subscription::with('product')->get(); foreach ($subscriptions as $item) { $item->product->shipping_price = ShippingService::getShippingPrice($item->product->key, $item->product->shipping_price, $item->address->zip); }

Esto cambiará shipping_price para cada producto que tenga la misma ID dentro de esas suscripciones.

Mi requisito es detener este comportamiento en este único lugar. Entonces, si cambio un atributo, no cambia otros.

Conozco una forma de volver a consultar con loop y no obtener productos usando una carga ansiosa, pero eso será lento.

Gracias.

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

0

Agregaría una propiedad personalizada "real_shipping_price" a este modelo de producto con un accesor getRealShippingPriceAttribute (usando su ShippingService).

Consulte https://laravel.com/docs/5.3/eloquent-serialization#appending-values-to-json por ejemplo.

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