tiny ‘n’ smart
database layer

Odkazy: dibi | API reference

Oznámení

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

DibiDatasource, chyba ve where?

před 8 lety

jpos
Člen | 2

Ahoj,
mám podezření, že se v DibiDatasource (ds) divně chová where(array(‚sloupec‘=>$hodnota)). Uvedu příklad:

<?php

$prdId = 13;

// FUNGUJE JAK MA
dibi::select('*')->from('PRODUCT')->where(array('PRD_ID' => $prdId))->fetch();

// NEFUNGUJE - viz dotaz který to generuje do proměnné $sql
$ds = dibi::dataSource('SELECT * FROM PRODUCT');
$de->where(array('PRD_ID'=>$prdId));
$sql = $ds->__toString(); // SELECT * FROM (SELECT * FROM PRODUCT) t WHERE (13)

?>

Je to chyba nebo vlastnost?

před 8 lety

Milo
Nette Core | 1119

API se můžeš dočíst o TODO. Tohle chování lze obejít:

$conditions = array(
    'PRD_ID' => $prdId,
    'col_2'  => '.....',
);

$ds = dibi::dataSource('SELECT * FROM product');
$ds->where('%and', $conditions);

před 8 lety

jpos
Člen | 2

Aha, takže je to vlastnost :-) Podle TODO jsem pochopil, že je v plánu to sjednotit… Ale stejně by bylo hezké, kdyby o tom že to v tuto chvíli není sjednocené informoval i phpDoc komentář a nemusel jsem tuhle informaci lovit ze zdrojáků… (ale zaplať Pánbůh, že je alespoň tam :-) )

Každopadně děkuji mnohokrát za vysvětlení a workaround!