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

ZF2 DB Adapter - Column not found: 1054 Unknown column

我正在使用 ZF2 数据库适配器并在我的查询中遇到以下错误:

Column not found: 1054 Unknown column '"product"'

但是 "product" 不是列,它是一个值,那怎么会呢?

这就是我构建查询的方式:

$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

谢谢

好的,我不知道为什么它不能像以前那样工作,但是当我移动

时它可以工作

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
$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');

找不到该列,因为在您的 query.The 解决方案中没有指向 table 类似这样,但是为了 ZF2 查询生成器的正确语法,您还应该检查这个 zend2 link: http://framework.zend.com/manual/1.12/en/zend.db.select.html