Pouziti IS NOT v poli Database Core

kleinpetr
Člen | 480
+
0
-

Zdravim,

poradi mi nekdo jak mohu pouzit podminky IS NOT v poli podminek?

Zkousim nasledujici

$val = null;
$conditions['col != ?' => $val];
$conditions['col IS NOT ?' => $val]; //tohle mi dokonce hazi  WHERE col IS NULL
$conditions['col <> ?' => $val];
$conditions['NOT col' => $val];

Diky za radu.

CZechBoY
Člen | 3608
+
0
-

is not in?

kleinpetr
Člen | 480
+
0
-

CZechBoY napsal(a):

is not in?

Take nefunguje, jakmile se objevi v hodnote pole NULL, automaticky doplni IS NULL.

CZechBoY
Člen | 3608
+
0
-

pošli kod kterým tohle převádíš do ndb

kleinpetr
Člen | 480
+
0
-

CZechBoY napsal(a):

pošli kod kterým tohle převádíš do ndb

$data = $this->database->fetchAll('SELECT * FROM table_name WHERE', $this->sql_conditions);

Pouzivam zde pouze Database Core ne Explorer.

Editoval kleinpetr (4. 2. 2019 12:10)

Martk
Člen | 661
+
0
-

V dokumentaci

$result = $database->query('SELECT * FROM users WHERE', [
    'name' => ['Jim', 'Jack'],
    'role NOT IN' => ['admin', 'owner'], // výčet + operátor NOT IN
]);
kleinpetr
Člen | 480
+
0
-

Martk napsal(a):

V dokumentaci

$result = $database->query('SELECT * FROM users WHERE', [
    'name' => ['Jim', 'Jack'],
    'role NOT IN' => ['admin', 'owner'], // výčet + operátor NOT IN
]);

Ano, ovsem to neplati pro NULL.

Martk
Člen | 661
+
+2
-

Podle rychlého zhlédnutí kódu nepodporuje NOT NULL. Doporučil bych nahradit SqlPreprocessor, ale bohužel je metoda formatValue private. Zkus použít SqlLiteral.

$conditions[] = $database::literal('col IS NOT NULL');

Editoval Martk (4. 2. 2019 14:16)

kleinpetr
Člen | 480
+
0
-

Martk napsal(a):

Podle rychlého zhlédnutí kódu nepodporuje NOT NULL. Doporučil bych nahradit SqlPreprocessor, ale bohužel je metoda formatValue private. Zkus použít SqlLiteral.

$conditions[] = $database::literal('col IS NOT NULL');

Mockrát díky, to je ono!