因爲幾天我有一個使用tablegateway和zf2函數的mysql查詢問題。Zend Framework 2 TableGateway MAX查詢
我想獲得'reservation_spot'
列的最大值,其中'reservation_datetime' = &reservation_datetime
查詢768,16是這樣
SELECT MAX(`reservation_spot`) FROM `reservation` WHERE `reservation_datetime`='2015-09-30 8:00'
我試過很多事情要解決這個問題,但我不能
這是我的函數
public function getMaxValueWhereDate($reservation_datetime)
{
$select = $this->tableGateway->getSql()->select();
$select->columns(array(
'maxValue' => new Expression('MAX(reservation_spot)')
));
$select->where(array('reservation_datetime' => $reservation_datetime));
$rowset = $this->tableGateway->selectWith($select);
$row = $rowset->current();
if (!$row) {
throw new \Exception("Could not retrieve max value");
}
return $row;
}
加上這個
$reservation->reservation_spot = $this->getMaxValueWhereDate($reservation_datetime);
$reservation->reservation_spot++;
當我運行我的形式在此之後,我得到的錯誤:
Statement could not be executed (42000 - 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ' '55', '41', '1', 0, '2015-09-08 16:23:27')' at line 1)
查詢從我的功能是
SELECT MAX(reservation_spot) AS `maxValue` FROM `reservation` WHERE `reservation_date` = '2015-09-30 08:00'
@UPDATE解決,編輯以
public function getMaxValueWhereDate($reservation_datetime)
{
$sql = $this->tableGateway->getSql();
$select = $sql->select();
$select->columns(array(
'maxValue' => new Expression('MAX(reservation_spot)')
));
$select->where(array('reservation_datetime' => $reservation_datetime));
return $this->tableGateway->selectWith($select);
}
和
$reservation->reservation_spot = (int)$this->getMaxValueWhereDate($reservation_datetime);
什麼呢查詢好像 ?您可以使用tableGateway-> getSqlStringFromSqlObject($ select)來打印sql查詢 – Unex
您是否正確「使用Zend \ Db \ Sql \ Expression;」在你的版本庫中 – Unex
從我的函數查詢是 SELECT MAX(reservation_spot)AS'maxValue' FROM'reservation' WHERE'reservation_date' ='2015-09-30 08:00' – MrMorf