ZF2数据库适配器 - 未找到列:1054未知列

时间:2015-06-18 16:08:50

标签: mysql zend-framework2

我使用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

由于

2 个答案:

答案 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