【发布时间】:2013-03-02 08:38:01
【问题描述】:
在我添加带有 join ON 子句的“IN”语句之前获取所有结果
我的代码是这样的:
// $this->table = 'category';
$sql = $this->getSql();
$select = $sql->select();
$select->join('user_category_subscriptions', 'user_category_subscriptions.category_id = category.id AND user_category_subscriptions.status IN (1,2,3,4)', array(), 'left');
$select->where(array('category.user_id = 2 OR (user_category_subscriptions.status IN (2,4))'));
错误
ZEND\DB\ADAPTER\EXCEPTION\INVALIDQUERYEXCEPTION
File:E:\htdocs\myproj\vendor\zendframework\zendframework\library\Zend\Db\Adapter\Driver\Pdo\Statement.php:245
Message:Statement could not be executed
使用'echo $select->getSqlString();'打印查询:
SELECT "categories".* FROM "categories"
LEFT JOIN "user_category_subscriptions"
ON "user_category_subscriptions"."category_id" = "categories"."category_id" AND "user_category_subscriptions"."status" IN ("1""," "2""," "3""," "4")
WHERE category.user_id = 2 OR (user_category_subscriptions.status IN (2,4))
所以问题是 zend 自动将 (1,2,3,4) 转换成 ("1""," "2""," "3""," " 4")
有解决这个问题的办法吗?谢谢
【问题讨论】:
标签: database join zend-framework2 in-clause