tiny ‘n’ smart
database layer

Odkazy: dibi | API reference

Oznámení

Omlouváme se, provoz fóra byl ukončen

getIndexes a fulltext

před 10 lety

lucien144
Člen | 15

Vsiml jsem si, ze MySQL driver nevraci v metode getIndexes informaci o tom, zda je klic typu FULLTEXT ci ne. Upravil jsem si tedy lehce driver a pridal navic metodu, ktera vrati v poli primo sloupce, ktere jsou typu FULLTEXT. Snad se to nekomu bude hodit…

<?php

require_once( dirname(__FILE__) . '/mysql.php' );

class DibiMy_MySQLDriver extends DibiMySqlDriver {

    public function getIndexes($table)
    {
        $this->query("SHOW INDEX FROM `$table`");
        $res = array();
        while ($row = $this->fetch(TRUE)) {
            $res[$row['Key_name']]['name']      = $row['Key_name'];
            $res[$row['Key_name']]['fulltext']  = $row['Index_type'] == 'FULLTEXT' ? TRUE : FALSE;
            $res[$row['Key_name']]['unique']    = !$row['Non_unique'];
            $res[$row['Key_name']]['primary']   = $row['Key_name'] === 'PRIMARY';
            $res[$row['Key_name']]['columns'][$row['Seq_in_index'] - 1] = $row['Column_name'];
            $res[$row['Key_name']]['columns'][$row['Seq_in_index'] - 1] = $row['Column_name'];
        }
        $this->free();
        return array_values($res);
    }

    public function getFulltexts($table)
    {
        $this->query("SHOW INDEX FROM `$table` WHERE `Index_type` = 'FULLTEXT'");
        $res = array();
        while ($row = $this->fetch(TRUE)) {

            $res[$row['Key_name']][$row['Seq_in_index'] - 1] = $row['Column_name'];

        }
        $this->free();
        return $res;
    }

}
/** End of file: mysql_extended.php */

?>