Zoo*_*oot 22 php mysql doctrine-orm dbal
使用示例文档,我能够获得这样的查询.
SELECT
f.foo,
b.bar
FROM Foo f
LEFT JOIN Bar b
WHERE
f.foo = 20
AND b.bar IN ?
Run Code Online (Sandbox Code Playgroud)
使用DBAL,此代码返回结果.
$result = $this->connection->executeQuery(
$SQL,
array($bar_array),
array(\Doctrine\DBAL\Connection::PARAM_INT_ARRAY)
)->fetchAll();
Run Code Online (Sandbox Code Playgroud)
我想搜索f.foo作为单个整数参数以及查找IN语句,但我还没有弄清楚如何使它运行,因为所有示例文档都将数组作为唯一参数.
小智 30
参数和类型是并行数组.您应该做的就是为f.foo值添加占位符,并在types参数中添加正确的PDO类型.
$SQL = "SELECT f.foo, b.bar
FROM Foo f LEFT JOIN Bar b
WHERE f.foo = ? AND b.bar IN (?)";
$result = $this->connection
->executeQuery($SQL, array($foo, $bar_array),array(
\PDO::PARAM_INT,
\Doctrine\DBAL\Connection::PARAM_INT_ARRAY
))->fetchAll();
Run Code Online (Sandbox Code Playgroud)
您可以阅读手册以获取更多信息.
小智 15
我刚刚遇到了下面的行为,所以我在这里写它,也许它会对其他人有用.
使用IN时使用命名参数时要小心.您还必须重复类型数组的名称:
$sql = "SELECT * FROM myTable WHERE name IN (:param_array)";
$stmt = $this->db->executeQuery(
$sql,
[
'param_array' => $paramArray
],
[
'param_array' => Connection::PARAM_STR_ARRAY
]
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15954 次 |
| 最近记录: |