在Doctrine
中,是否可以绑定一个参数的name
(与绑定参数的value相反)?
有一个表有 7 个boolean 列,一个代表一周中的每一天:monday
、tuesday
等(这些对应于 GTFS 定义的 calendar
实体的结构,https://gtfs.org /schedule/reference/#calendartxt).
给定一周中的某一天(比如,monday
),我想获取周一可用的所有行,即:
$statement = $this
->getEntityManager()
->getConnection()
->prepare('
SELECT id
FROM calendar
WHERE monday = 1
');
一般来说,我希望能够在该查询中提供一天的名称,我可以通过以下方式简单地做到这一点:
->prepare("
SELECT id
FROM calendar
WHERE $dayName = 1
");
我想知道是否可以对参数名称使用参数绑定,例如
$statement = $this
->getEntityManager()
->getConnection()
->prepare('
SELECT id
FROM calendar
WHERE :dayName = 1
');
$statement->bindValue('dayName', $dayName);
这不起作用,见下文。
#1
WHERE :dayName = 1
转换为以下 SQL 查询:
SELECT calendar.id
FROM calendar
WHERE 'monday' = 1
并且,因为该条件永远不会为真,所以返回一个空集,[]
.
#2
WHERE `:dayName` = 1
SELECT calendar.id
FROM calendar
WHERE `'monday'` = 1
Column not found: 1054 Unknown column ''monday'' in 'where clause'
#3
WHERE ":dayName" = 1
# no query
Invalid parameter number: number of bound variables does not match number of tokens