2014-09-19 65 views
1

未找到列:1054'where子句'中的未知列'total_points'zend框架2 tablegateway select erroring out

protected $ tableGateway;

public function __construct(TableGateway $tableGateway) 
{ 
    $this->tableGateway = $tableGateway; 
} 


public function fetchPoints$transaction_number) 
{ 
    $results = $this->tableGateway->select(
     array('total_points' => new \Zend\Db\Sql\Expression("sum(points)")), 
     array('trxnumber' => $transaction_number) 
    ); 
    return $results[0]['total_points']; 
} 

它在哪裏試圖讓total_points列從?我認爲積分是列,total_points是alyias。

回答

1

選擇只接受一個參數「where」。您目前的查詢是:

select * from my_table where total_points=sum(points) 

女巫正在拋出預期的錯誤。我客串我要:

select sum(points) as total_points from my_table where trxnumber=X 

在這種情況下,你應該這樣做:

$select = $this->tableGateway->getSql()->select(); 
$select 
    ->columns(array('total_points' => new \Zend\Db\Sql\Expression("sum(points)"))) 
    ->where(array('trxnumber' => $transaction_number)); 
$result = $this->tableGateway->selectWith($select);