JSON_CONTAINS_PATH podmínka nefunguje
- crassus
- Backer | 78
Dobrý den,
když zkouším zapsat where podmínku v následujícím dotazu:
foreach($this->db->table('benefit')->where('JSON_CONTAINS_PATH(json, "one", "$.text_content.cs")') as $benefit)
{
...
}
Tak dostávám error:
Nette\InvalidArgumentException
No reference found for $benefit->text_content.
Dá se ta where podmínka zapsat pomocí Database Explorer nebo je to pro json úplně marné?
Děkuji
Editoval crassus (16. 3. 2020 0:48)
- David Matějka
- Moderator | 6445
retezce davej pres parametry:
->where('JSON_CONTAINS_PATH(json, ?, ?)', "one", "$.text_content.cs")
- crassus
- Backer | 78
David Matějka napsal(a):
retezce davej pres parametry:
->where('JSON_CONTAINS_PATH(json, ?, ?)', "one", "$.text_content.cs")
Super díky funguje to!
Můžu nějak přes parametr poslat i boolean, aby mi to ve výsledném SQL dotazu neudělalo integer?
Tzn. z tohodle:
->where('json->"$.active"', true)
Abych dostal tohle SQL:
SELECT `id`, `json`
FROM `benefit`
WHERE (`json`->"$.active" = true)
Nikoliv toto:
SELECT `id`, `json`
FROM `benefit`
WHERE (`json`->"$.active" = 1)
- David Matějka
- Moderator | 6445
a ten kod s 1 nefunguje? v mysql by to imho melo byt ekvivalentni
edit: vlastne u json mozna ne..
zkus
->('json->? = ?', "$.active", new Nette\Database\SqlLiteral('true'))