tiny ‘n’ smart
database layer

Odkazy: dibi | API reference

Oznámení

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

Dynamický select modifikátor pole

před 9 lety

Figa
Člen | 21

Ahoj rád bych vytvořil takovouto fci:

<?php
    public function findAllParams($what = array(), $order = NULL, $where = NULL, $offset = NULL, $limit = NULL)
    {
        return dibi::query('SELECT', $what,
                           'FROM [Param]',
                           '%if', isset($where), 'WHERE %and', isset($where) ? $where : array(), '%end',
                           '%if', isset($order), 'ORDER BY %by', $order, '%end',
                           '%if', isset($limit), 'LIMIT %i %end', $limit,
                           '%if', isset($offset), 'OFFSET %i %end', $offset)
                           ->fetchAssoc('name');
    }
?>

Jaký mám dát modifikátor k tomu SELECT? Jde to řšit i lépe? Předem děkuji za odpovědi.

před 9 lety

westrem
Člen | 398

Neviem ci spravne chapem otazke, ale ako modifikator pre identifikatory sa pouziva %n a bude to fungovat tak ako chces.

Inac preco neskusis dynamicky vytvarat DibiFluent podla toho co potrebujes? A nemusis to znasilnovat do takejto funkcie ;)

před 9 lety

Figa
Člen | 21

Děkuji mnohokrát to je přesně ono. Fluent nepoužívám protože David někde napsal, že nejsou ještě optimalizovány :) Vím, asi hloupý předsudek. Snad nebude vadit, když tento topic, využiji jako noob-helper. Mám tento šílený kód:

<?php
        foreach(ParamManager::findAllParams() as $param) {
            $this->array[] = $param['name'];
        }

        $this->template->list = implode(',', $this->array);
?>

Jak to prosím napsat lépe? Ještě jednou děkuji.

před 9 lety

Milo
Nette Core | 1119

Myslím, že fluent je OK, jen s DibiDataSource je problém.

Editoval Milo (19. 11. 2010 18:48)

před 9 lety

westrem
Člen | 398

DibiFluent je naozaj okej a nemusis sa bat ho pouzivat ;)

K tomu kodu, ak spravne chapem ide ho zapisat na jeden riadok:

$this->template->list = implode(',', array_keys(ParamManager::findAllParams()));

před 9 lety

Figa
Člen | 21

Díky moc kluci :) Dám na vás a až budu příště skládat složitější dotaz tak bude fluentí . Mám další dotaz. Existuje v dibi možnost otestovat jestli existuje sloupec v tabulce? Samotné SQL to neumožňuje. Pokud taková metoda není možná by stálo za to dát to do ToDo. Ještě jednou děkuji.

Edit: Vyřešeno. Díky Dibi(Davide).

<?php
    public function isColumn($column) {
        $dbInfo = dibi::getDatabaseInfo();
        $tableInfo = $dbInfo->getTable($this->table);
        return $tableInfo->hasColumn($column);
    }

?>

Editoval Figa (22. 11. 2010 23:47)