it-swarm-eu.dev

Come posso ottenere i nomi delle colonne in un oggetto o in una tabella con l'SQL di Joomla?

Con l'output esistente che ho da una query di base, quale sarebbe il modo migliore per ottenere i nomi delle colonne nell'oggetto di output risultante senza dover eseguire una query COLUMNS aggiuntiva sul database, al fine di salvare le chiamate al database?

    $db = JFactory::getDbo();
    $query = $db->getQuery(true);
    $query->select('*');
    $query->from('#__table');
    $db->setQuery($query);
    $results = $db->loadObjectList();

    ----

    foreach($results as $key=>$value)
    {
       echo $key;
    }

Restituisce un oggetto, ma nessuno dei miei tentativi di ottenere la chiave dal valore key => sembra funzionare, anche con un ciclo foreach. Non voglio eseguire query extra solo per ottenere le mie chiavi. Come farei con l'output esistente di $ results?

4
Merlin

Il tuo foreach si tradurrà in una situazione in cui $ key è la chiave dell'array e $ value è una riga dal database. Se vuoi ottenere i nomi delle colonne dal risultato usa semplicemente get_object_vars :

$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select('*');
$query->from('#__table');
$db->setQuery($query);
$results = $db->loadObjectList();

// this will return array of object properties
// in format: array('column1'=>'content1','column2'=>'content2')
$properties = get_object_vars($results[0]);

Puoi anche semplicemente chiedere array di array invece di array di oggetti. È fatto così:

$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select('*');
$query->from('#__table');
$db->setQuery($query);
$results = $db->loadAssocList();

// this will return array of column names properties
// in format: array('column1','column2')
$columns = array_keys($results[0]);
7
Artur Stępień

Per ottenere tutte le colonne di una tabella come matrici, utilizzare il metodo della classe JDatabase come segue:

$db=JFactory::getDBO();
$columnArr=$db->getTableColumns("#__table_name");
foreach ($columnArr as $key => $value) {
    // here $key will be column name and $value will be type
    // process array code
}
3
Pratyush