- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
post('/api/shops/search', functi-6ren">
我正在使用 Phalcon 创建一个 RESTful API。
我想通过 ID 从“商店”表中获取一些数据。
PHP代码:
$app->post('/api/shops/search', function () use ($app) {
$ids_shop = $app->request->getJsonRawBody();
$ids = array();
foreach($ids_shop as $id){
$ids[] = $id->id_shop;
}
$ids_str = implode(",", $ids);
$shops = getShopsData($ids_str, $app);
return $shops;
});
function getShopsData($ids_shop, $app) {
$phql = "SELECT * FROM Shops WHERE Shops.id IN ( :ids: )";
$shops = $app->modelsManager->executeQuery($phql, array(
'ids' => $ids_shop
));
return $shops;
}
测试:
curl -i -X POST -d '[{"id_shop":1},{"id_shop":2}]' http://localhost/sample/api/shops/search
但是我只能得到一个id为1的数据,我也试过了:
curl -i -X POST -d '[{"id_shop":2},{"id_shop":1}]' http://localhost/sample/api/shops/search
这将返回一个 id 为 2 的数据。
为什么我不能获取多个数据?我的日志显示 $ids_str = "1,2",所以我认为 phql 查询可能是正确的...
最佳答案
由于很少有同时使用 PDO 和 PHQL 的示例 here和 here适合您的示例,在 Phalcon queryBuilder 机制中还有另一种可能的方法:
$builder = $this->modelsManager->createBuilder();
$builder->addFrom('Application\Entities\KeywordsTrafficReal', 'tr')
->leftJoin('Application\Entities\Keywords', 'kw.id = tr.keyword_id', 'kw')
->inWhere('keyword_id', self::$keywords) // <<< it is an array!
->betweenWhere('traffic_date', self::$daterange['from'], self::$daterange['to']);
据我所知,
inWhere
方法只能通过 queryBuilder 访问,它的工作方式与提到的 PDO 示例 IN (?, ?, ?)
完全相同。但您不需要手动实现它。
您也可以跳过创建 PHQL 的部分,直接驱动创建 SQL 查询,但需要自己进行验证。
$realModel = new KeywordsTrafficReal();
$sql = sprintf('SELECT * '
. 'FROM keywords_traffic_real tr '
. 'LEFT JOIN keywords kw '
. 'ON kw.id = tr.keyword_id '
. 'WHERE tr.keyword_id IN(%s) '
. "AND traffic_date BETWEEN '%s' AND '%s' ",
join(',', self::$keywords), self::$daterange['from'], self::$daterange['to']);
$results = new \Phalcon\Mvc\Model\Resultset\Simple(null, $realModel, $realModel->getReadConnection()->query($sql));
关于php - PHQL "WHERE xxx IN ()"只能获取1条数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33446366/
我正在使用 Phalcon 创建一个 RESTful API。 我想通过 ID 从“商店”表中获取一些数据。 PHP代码: $app->post('/api/shops/search', functi
我需要从表中获取行数作为字符串。我执行这段代码: $phql = "SELECT COUNT(*) FROM Model WHERE id = $this->id"; $count = $this-
我需要从表中获取行数作为字符串。我执行这段代码: $phql = "SELECT COUNT(*) FROM Model WHERE id = $this->id"; $count = $this-
将 GROUP BY 添加到我的查询时,Phalcon 给我一个错误 - Phalcon\Mvc\Model\Exception: 语法错误,意外的标记 GROUP,接近 ' BY... 这是我的代码
我是一名优秀的程序员,十分优秀!