Nueva pregunta

Pregunta:

Fecha: 20-08-2019 22:17:12 (En Español)

¿Cómo hacer que los atributos de una clase, sean los campos de una tabla, sin tener que escribirlos?[Resuelta]

Estoy creando un sistema que administra múltiples tablas de una base de datos, y bueno, la tarea es repetitiva y siempre la misma: controles para crear, leer, editar y eliminar sus campos.

El punto es que puedo simplificar mucho el código, si consigo vincular los nombres de los campos (bien sea de una tabla con los datos de creación de cada tabla, o leer directamente estos datos de las tablas ya construidas) en la parte de atributos de la clase. Algo así como:

<?php namespace Modelos;

	class Curso{

		// Atributos
		private $tablaNombre;
		private $campo = array();

		public __construct($tabla){
			$columnas={ -columnasDeLaTabla- };
			foreach($columnas as columna)
				$this->campo[0]=$columna;
		}

		// ...otros métodos
	


¿Qué me sugieren? pienso que el detalle está en cómo conseguir los datos -columnasDeLaTabla-

Saludos.
Etiquetas: PHP MySQLi Votos: 0 - Respuestas: 3 - Vistas: 9 Compartir en: Google Facebook Twitter LinkedIn Link
 

Respuestas:

  • Fecha: 21-08-2019 08:31:54 Utiliza un ORM que hace precisamente eso.

    Entre los más conocidos tienes:

    Doctrine

    Eloquent

    Propel

    Personalmente me inclino por Doctrine pero en gustos se rompen géneros y depende de tu aplicación.

    Saludos!
      Votos: 1 - Link respuesta
     
  • Fecha: 23-08-2019 17:27:32 Gracias. Lo estudiaré de inmediato.
    ...
    Lo encuentro bastante interesante, y se parece bastante a los métodos que utilizo para manipular las bases de datos, ejemplo:

    					$this->curso->set("nombre", $_POST['nombre']);
    					$this->curso->set("clave", $_POST['clave']);
    					$this->curso->set("especialidad", $_POST['especialidad']);
    					$this->curso->set("imagen", $nombre);
    					$this->curso->add();
    


    Por lo que leo, estoy ante un ORM "de usuario", bastante elemental, al cual solamente le falta un método para inicializar con los datos de la tabla las variables de la clase. No cabe duda que me oxidé un poco.

    Saludos.
      Votos: 0 - Link respuesta
     
  • Fecha: 24-08-2019 17:34:55 Bien. Creo que me funciona lo siguiente:

    <?php namespace Modelos;
        class Curso{
            // Atributos
            private $campo = array(); // Todos los datos disponibles después de construir el objeto
    
    	// Constructor
            public __construct(){
    		$this->con = new Conexion(); // Crea la conexión
    		$datos = $this->listar(); // Obtiene un registro
    		$this->campo = mysqli_fetch_assoc($datos); // Asigna los datos al atributo
            }
    
            // ...otros métodos
    


    En todo caso, Ernesto, me pusiste en contexto. Saludos.
      Votos: 0 - Link respuesta
     
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión
 
frjcbbae garagebible.com