Utilizar una variable para instanciar una clase
AUTOR PREGUNTA #1
Buenas comunidad, queria consultar acerca de un tema que no se si es posible, resulta que estoy creando una funcion que me permita instanciar de manera dinamica en este caso modelos de eloquent en laravel para ello le mando en parametros lo que quiero realizar, ejemplo
public function update($id, $data, $table){ return $table::find($id)->update($data); }
lo que quiero es que el return actue como lo siguiente
return User::find($id)->update($data);
donde User puede ser cualquier modelo de eloquent
Gracias de antemano por su respuesta
-
4 personas más tuvieron esta duda Yo también
Esto también te interesa!
PREGUNTAS SIMILARES
#2
Instancia de clases PHP que seguro te interesarán. Si has encontrado nuevas formas de hacerlo compártelo que tu caso también me interesa.
AUTOR PREGUNTA #3
Gracias a todos.
Encontré la respuesta, después de analizar todos los errores que arrojaban muchos casos de prueba. Al fin conseguí la funcionalidad que deseaba y comparto con ustedes, si alguien mas se encuentra en el mismo problema.
Solución:
- public function update($id, $data, $table){
- return $table::find($id)->update($data);
- }
En la función agregue las siguientes lineas de código
$instancia = trim("App\Entities\ ").$table; $obj=new $instancia; return $obj::find($id);
*Donde ("App\Entities\ ") es la ubicación del modelo a referenciar, notese que hay un espacio, es porque en laravel el backslash(/) lo trata de diferente manera al lado de un carácter especial. El trim es para eliminar ese espacio en blanco y concatenarlo con la variable donde esta el nombre de la tabla, por lo demás ya se puede manejar de manera dinámica la instanciacion de un modelo.
Es la manera en la cual logre solucionar. Espero que les sirva, saludos!
#4
Genial! este artículo me sirvió de manera excelente, gracias por la ayuda y excelente investigación!