NTDB where NOT – dokumentace

3 years ago

blaztar
Member | 94
+
0
-

Narazil jsem na zvláštní chování, nevím zda jde o chybu nebo dělám něco špatně.

Potřeboval jsem zápornou podmínku v NTDB a použil:

$this->table('table')->where('column NOT', 0);

a dostal jsem exception:

SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '0)' at line 1

Toto ale projde bez problémů:

$this->table('table')->where('NOT column', 0);

Dokumentace přitom povídá že oba zápisy jsou identické.

$selection->where('NOT id', 1);
$selection->where('id NOT', 1); // to samé

Last edited by blaztar (2016-03-08 13:39)

3 years ago

Attanon
Member | 25
+
0
-

You are in english part of Nette forum. Czech forum you can find here.

Can you paste the sql query? You can find it in Tracy debug bar.

blaztar wrote:

Narazil jsem na zvláštní chování, nevím zda jde o chybu nebo dělám něco špatně.

Potřeboval jsem zápornou podmínku v NTDB a použil:

$this->table('table')->where('row NOT', 0);

a dostal jsem exception:

SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '0)' at line 1

Toto ale projde bez problémů:

$this->table('table')->where('NOT row', 0);

Dokumentace přitom povídá že oba zápisy jsou identické.

$selection->where('NOT id', 1);
$selection->where('id NOT', 1); // to samé

3 years ago

blaztar
Member | 94
+
0
-

You are right, I am sorry.

First one (id NOT)

SELECT *
FROM `product_x_property`
WHERE (`lang` = 1) AND (`product` = 1) AND (`option` NOT 0)

second one (NOT id)

SELECT *
FROM `product_x_property`
WHERE (`lang` = 1) AND (`product` = 1) AND (NOT `option` = 0)

3 years ago

David Matějka
Moderator | 5729
+
0
-

It is a bug. It works great with arrays, nulls, sub-selects but not with scalars: https://github.com/…Where().phpt#…