Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Zend Framework 2 TableGateway MAX查询_Php_Mysql_Zend Framework_Zend Framework2 - Fatal编程技术网

Php Zend Framework 2 TableGateway MAX查询

Php Zend Framework 2 TableGateway MAX查询,php,mysql,zend-framework,zend-framework2,Php,Mysql,Zend Framework,Zend Framework2,几天以来,我在使用tablegateway和zf2函数进行mysql查询时遇到了问题 我想获取列'reservation\u spot'的最大值,其中'reservation\u datetime'=&reservation\u datetime 查询应该是这样的 SELECT MAX(`reservation_spot`) FROM `reservation` WHERE `reservation_datetime`='2015-09-30 8:00' 我试过很多方法来解决那个问题,但我做不

几天以来,我在使用tablegateway和zf2函数进行mysql查询时遇到了问题

我想获取列
'reservation\u spot'
的最大值,其中
'reservation\u datetime'=&reservation\u datetime
查询应该是这样的

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++;
在此之后,当我运行表单时,会出现错误:

语句无法执行(42000-1064-您在 您的SQL语法;请检查与您的SQL语法对应的手册 “55”、“41”、“1”、0附近要使用的正确语法的服务器版本, “2015-09-08 16:23:27”)(第1行)

来自我的函数的查询是

SELECT MAX(reservation_spot) AS `maxValue` FROM `reservation` WHERE `reservation_date` = '2015-09-30 08:00'
@更新已解决,编辑为

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);
}


返回的行结果是模型的实例,而不是所需的值

在第一个示例中,更改此行:

返回$row->maxValue;
您还必须在模型中声明maxValue字段,否则它将不会被映射

如果模型中不需要此字段,另一种可能性是使用现有字段:

$select->columns(array(
    'reservation_spot' => new Expression('MAX(reservation_spot)')
));
然后:

return $row->reservation_spot;

查询看起来像什么?您可以使用tableGateway->getSqlStringFromSqlObject($select)打印sql查询ID。您可以正确地“使用Zend\Db\sql\Expression”;在您的存储库中,我的函数的查询是select MAX(保留点)作为
maxValue
from
reservation
其中
reservation\u date
='2015-09-30 08:00'我不确定,错误消息与您提供的代码示例链接。返回$row['maxValue']应该解决,而不是强制转换它。
return $row->reservation_spot;
$date = '2015-09-30 8:00';
$select = $this->getSql()->select()
           ->columns(array('Reservation ' => new \Zend\Db\Sql\Expression('MAX(reservation_spot)')))
           ->where("reservation_datetime ='$date'");
        $resultSet = $this->selectWith($select);
        $row = $resultSet->current();