получить метаданные из набора результатов в Zend Framework - PullRequest
0 голосов
/ 23 января 2012

У меня есть код в php:

$result = mysql_query($cxn,$sql_query)
$dataset=  mysqli_fetch_fields($result);
for ($i = 0; $i < 13; $i++) {
      $dataset[$i]->name
 }

Я хочу, чтобы вышеуказанный код в Zend.

Здесь mysql_fetch_fields ($ result) возвращает информацию о полях из данного набора результатов$ result.How сделать это в Zend Framework? Я погуглил, я обнаружил, что мы можем получить информацию о столбцах из определенной таблицы, но из набора результатов, как получить в Zend Framework ??

Ответы [ 2 ]

1 голос
/ 23 января 2012

В настоящее время это невозможно в Zend Framework.Посмотрите на Запросить решение для метаданных набора результатов .Вы можете попробовать использовать экспериментальный PDOStatement :: getColumnMeta

UPDATE - пример кода в комментариях

sample table structure
table1: id (int), field1 char(3)
table2: id (int), field2 char(3)

<?php

require_once('Zend/Loader/Autoloader.php');

$autoloader = Zend_Loader_Autoloader::getInstance();

// create MySQL database adapter
$db = new Zend_Db_Adapter_Pdo_Mysql(array(
    'host'     => '127.0.0.1',
    'username' => 'test',
    'password' => 'test',
    'dbname'   => 'test'
));

// create temporary table
$result = $db->getConnection()->exec('
    CREATE TEMPORARY TABLE myTable 
    SELECT
        t1.id,
        t1.field1,
        t2.field2
    FROM table1 t1
        INNER JOIN table2 t2
            ON t1.id = t2.id
');

// describe
$info = $db->describeTable('myTable');

var_dump($info);

// drop table
$result = $db->getConnection()->exec('DROP TEMPORARY TABLE myTable');

Подробнее о запуске«другие» операторы базы данных

0 голосов
/ 24 января 2012

Я обнаружил, что получить все метаданные о таблице очень просто с Zend Framework.

  • сначала создайте модель DbTable для вашей таблицы: Определите класс таблицы
  • создание экземпляра объекта: $table = new Application_Model_DbTable_Table();
  • call -> info () для этого объекта: $ meta = $ table-> info ()

Вот выдержка издамп с использованием этого метода: Получение метаданных таблицы

array(10) {
  ["schema"] => NULL
  ["name"] => string(5) "track"
  ["cols"] => array(6) {
    [0] => string(7) "trackid"
    [1] => string(9) "weekendid"
    [2] => string(7) "shiftid"
    [3] => string(13) "bidlocationid"
    [4] => string(3) "qty"
    [5] => string(4) "lead"
  }
  ["primary"] => array(1) {
    [1] => string(7) "trackid"
  }
  ["metadata"] => array(6) {
    ["trackid"] => array(14) {
      ["SCHEMA_NAME"] => NULL
      ["TABLE_NAME"] => string(5) "track"
      ["COLUMN_NAME"] => string(7) "trackid"
      ["COLUMN_POSITION"] => int(1)
      ["DATA_TYPE"] => string(8) "smallint"
      ["DEFAULT"] => NULL
      ["NULLABLE"] => bool(false)
      ["LENGTH"] => NULL
      ["SCALE"] => NULL
      ["PRECISION"] => NULL
      ["UNSIGNED"] => NULL
      ["PRIMARY"] => bool(true)
      ["PRIMARY_POSITION"] => int(1)
      ["IDENTITY"] => bool(true)
    }
... cont ...
 }
  ["rowClass"] => string(27) "Application_Model_Row_Track"
  ["rowsetClass"] => string(20) "Zend_Db_Table_Rowset"
  ["referenceMap"] => array(3) {
    ["Weekend"] => array(3) {
      ["columns"] => string(9) "weekendid"
      ["refTableClass"] => string(33) "Application_Model_DbTable_Weekend"
      ["refColumns"] => string(9) "weekendid"
    }
    ["Shift"] => array(3) {
      ["columns"] => string(7) "shiftid"
      ["refTableClass"] => string(31) "Application_Model_DbTable_Shift"
      ["refColumns"] => string(7) "shiftid"
    }
    ["BidLocation"] => array(3) {
      ["columns"] => string(13) "bidlocationid"
      ["refTableClass"] => string(37) "Application_Model_DbTable_BidLocation"
      ["refColumns"] => string(13) "bidlocationid"
    }
  }
  ["dependentTables"] => array(1) {
    [0] => string(32) "Application_Model_DbTable_Member"
  }
  ["sequence"] => bool(true)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...