我使用ZF2数据库适配器并在查询中收到以下错误:
找不到列:1054未知栏'"产品"'
但"产品"不是专栏,它是一个价值,所以怎么样?
这是我构建查询的方式:
$select = $this->getGateway()->getSql()->select();
$select->join('keywordlink', 'keywordlink_ref_type = "product" AND keywordlink_ref_id = product_id', ['keyword_count' => new Expression('COUNT(keyword_id)')], Select::JOIN_LEFT);
$select->where(['product_deleted IS NULL']);
$select->group(['product_id']);
顺便说一下,字段keywordlink_ref_id是mysql数据库中的ENUM。
当我自己编写SQL时,它可以工作:
SELECT
product.*, COUNT(DISTINCT keywordlink_keyword_id) AS keyword_count
FROM
adcheck.product
LEFT JOIN
keywordlink
ON
keywordlink_ref_type = "product" AND keywordlink_ref_id = product_id
WHERE
product_deleted IS NULL
GROUP BY
product_id
由于
答案 0 :(得分:0)
好的,我不知道为什么它不像以前一样工作但是当我移动
时它会起作用keywordlink_ref_type =" product"
进入where条件:
SELECT
product.*, COUNT(DISTINCT keywordlink_keyword_id) AS keyword_count
FROM
adcheck.product
LEFT JOIN
keywordlink
ON
keywordlink_ref_id = product_id
WHERE
keywordlink_ref_type = "product" AND product_deleted IS NULL
GROUP BY
product_id
答案 1 :(得分:0)
$sql = $this->getGateway()->getSql()->select();
$sql->from('product')->join('keywordlink', "keywordlink.ref_id" = "product.id", LEFT);
$sql->where->equalTo( 'keywordlink.column' = 'product.column');
$sql->where->equalTo('product.deleted', NULL);
$sql->group('product.product_id');
找不到列,因为查询中没有指向表。解决方案类似于此,但是对于ZF2查询构建器的正确语法,您还应该查看此zend2链接:http://framework.zend.com/manual/1.12/en/zend.db.select.html