web-dev-qa-db-ja.com

JoomlaのSQLを使用してオブジェクトまたはテーブルの列の名前を取得するにはどうすればよいですか?

基本的なクエリからの既存の出力を使用して、データベースで追加のCOLUMNSクエリを実行せずに、結果の出力オブジェクトの列の名前を取得する最良の方法は何ですか-データベース呼び出しを保存するために?

    $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;
    }

オブジェクトを返しますが、foreachループがあっても、key => valueからキーを取得しようとする試みはどれも機能していないようです。キーを取得するためだけに追加のクエリを実行したくありません。 $ resultsからの既存の出力でこれをどのように実行しますか?

4
Merlin

foreachを実行すると、$ keyが配列キーで、$ valueがデータベースの1行になります。結果から列名を取得したい場合は 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]);

オブジェクトの配列の代わりに配列の配列を要求することもできます。そのように作られました:

$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ń

テーブルのすべての列を配列として取得するには、次のようにJDatabaseクラスのメソッドを使用します。

$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