whereOr na stejný sloupec

JaxP
Člen | 62
+
+1
-

Nette Database Explorer

Cíl: vyber řádky, kde je text NULL nebo prázdný string

// => ... WHERE text = '' OR text IS NULL

Ex.1:

/** @var Selection */
$selection->where('text',[NULL,'']);
// => ... WHERE text IN (NULL,'') mariaDB ignoruje NULL, pro porovnání vyžaduje "IS NULL"

Ex.2:

/** @var Selection */
$selection->whereOr(['text' => NULL, 'text' => '']);
// => ... WHERE text = '' protože klíč pole je text (stejný)

Nápad jak tohoto query docílit?
Děkuji

Edit:
Dodám řešení za roh, které však funguje (vloží přímo celý string do podmínky)

$selection->where("text IS NULL OR text = ''")

Editoval JaxP (26. 7. 2018 14:11)

GEpic
Člen | 566
+
-1
-

Proč máš jednou prázdnej string a jednou NULL když to indikuje ten samej stav?

JaxP
Člen | 62
+
0
-

GEpic napsal(a):

Proč máš jednou prázdnej string a jednou NULL když to indikuje ten samej stav?

Jde o teoretický dotaz nad Databse Explorerem, místo prázdného stringu to můžeme interpretovat třeba jako „zadek“.
Můžeme tedy nadále pracovat s verzí: (není důležitý zadek, ale formulace podmínky s NULL)

$selection->where('text',[NULL,'zadek']);

To, že v tuto chvíli chci vybrat „zadek“ a null neznamená, že v jiném případě nechci zadek a jindy zase null.

Editoval JaxP (26. 7. 2018 15:05)

Phalanx
Člen | 310
+
0
-

Takto?

<?php
$text = 'abc';
$selection->where("text IS NULL OR text = ?", $text)
?>

Editoval Phalanx (26. 7. 2018 15:16)