tiny ‘n’ smart
database layer

Odkazy: dibi | API reference

Oznámení

Omlouváme se, provoz fóra byl ukončen

PostgreSQL: Escapování vložených subqueries

před 8 lety

maarlin
Člen | 207
$commentsCount = $this->connection
    ->select('COUNT(*)')->from('articles_comments')
    ->where('[article_id]=a.[id]');

echo (string)$commentsCount;
/*
SELECT COUNT(*) FROM "articles_comments" WHERE "article_id"=a."id"
*/
$query = $this->connection
    ->select('a.*, (%sql) AS comments_count', (string)$commentsCount)
    ->from('articles a');
$query->test();
/*
SELECT a.*, (
SELECT COUNT(*)
FROM 'articles_comments'
WHERE 'article_id'=a.'id') AS comments_count
FROM articles a
*/

Proč se to při konverzi na string přeloží správně (kolem názvů tabulek a sloupců vloží uvozovky), ale pak při vložení jako subquery to překonvertuje na apostrofy?

před 8 lety

Milo
Nette Core | 1119

Trochu se toho týká téma %sql a %SQL. Použij %SQL.