Comparte:
copiar un objeto sin referenciarse entre ellos
tengo un formulario con livewire para crear productos, que luego de guardarlo:
$this->producto->user_id = Auth::user()->id;
$this->producto->save();
quiero copiar el mismo objeto en otra tabla (audit_productos) que posee un campo extra (accion), entonces hago:
$audit = new AuditProduct;
$audit = $this->producto;
$audit->accion = "CREAR"
$audit->save();
Al hacer $audit->save(), en vez de guardar en audit_productos trata de actualizar el modelo productos. Obviamente esto ocurre porque se clonan todo los atributos del objeto $this->producto en $audit.
Cual sería la opción mas optima para copiar los datos de $this->producto a $audit evitando que se referencie al modelo Producto?
Cual sería la opción mas optima para copiar los datos de $this->producto a $audit evitando que se referencie al modelo Producto?
Juan Matias Granda (26 xp)
ok, despues de renegar buscando y mandar la pregunta me puse a ver los metodos de los objetos en el VSCode y probando logré hacer lo que quiero, lo pongo por si le sirve a alguien. Si hay algun mejor metodo para hacerlo me avisan.
$this->audit = new AuditProducto;
$this->audit->setRawAttributes($this->producto->getAttributes());
$this->audit->accion = 'CREAR';
$this->audit->save();
1