tiny ‘n’ smart
database layer

Odkazy: dibi | API reference

Oznámení

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

DibiConnection – proč se při překladu dotazu pojit k databázi?

před 8 lety

maarlin
Člen | 207

Proč se dibi samovolně při překladu dotazu – např. takto:

$query = (string) $this->connection->select('*')->from('articles');

pokouší připojit k databázi?

To snad z principu DB layeru není v tento moment potřeba, nebo se mýlím? Překladem na string bych očekával, že dostanu prostě syntakticky přeložený dotaz a k jeho sestavení imho opravdu není potřeba spojení do databáze.

Jde mi konkrétně o tato dvě místa (dvě metody, které volá __toString()) v DibiConnection:

/**
 * Returns the driver and connects to a database in lazy mode.
 * @return IDibiDriver
 */
final public function getDriver()
{
    $this->connected || $this->connect(); // Here
    return $this->driver;
}

/**
 * Generates SQL query.
 * @param  array
 * @return string
 */
private function translateArgs($args)
{
    $this->connected || $this->connect(); // Here
    return $this->translator->translate($args);
}

před 8 lety

Milo
Nette Core | 1119

Myslím, že jedním z důvodů je mysql_real_escape_string() v MySQL driveru.