Konverze booleanu na integer uvnitř sql where conditon

crassus
Backer | 75
+
0
-

Dobrý den,

když zavolám pomocí Database Explorer následující kód:

foreach($this->db->table('benefit')->where('json->"$.active"', true) as $benefit)
{
    ...
}

tak se z něj vyrobí následující SQL:

SELECT `id`, `json`
FROM `benefit`
WHERE (`json`->"$.active" = 1)

Lze nějak docílit toho, aby ve výsledném SQL nebyla jednička ale true? Tzn. takhle:

SELECT `id`, `json`
FROM `benefit`
WHERE (`json`->"$.active" = true)

Děkuji

CZechBoY
Člen | 3608
+
0
-

Zkus ->where('json->$.active = ?', true)
pripadne to cely dat jako string bez otazniku

crassus
Backer | 75
+
0
-

CZechBoY napsal(a):

Zkus ->where('json->$.active = ?', true)
pripadne to cely dat jako string bez otazniku

Bohužel s tím otazníkem to vytvoří zase jedničku.

Když uvedu podmínku jako string, tak zase vznikne tohle:

SELECT *
FROM `benefit`
WHERE (`json`->"$.active" = `true`)
ORDER BY `json_data`->"order" ASC

a vypíše error: SQLSTATE[42S22]: Column not found: 1054 Unknown column ‚true‘ in ‚where clause‘

crassus
Backer | 75
+
0
-

Ok mám to, stačí to true napsat velkým: TRUE, tzn.

foreach($this->db->table('benefit')->where('json->"$.active" = TRUE') as $benefit)
{
    ...
}