首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ZendFramework2 TableGateway选择错误

ZendFramework2 TableGateway选择错误
EN

Stack Overflow用户
提问于 2015-09-05 16:42:17
回答 1查看 432关注 0票数 0

我想知道在$reservation_datetime有多少预订。我写了这段代码,但是我有错误

可捕获的致命错误:传递给Reservations\Model\ReservationTable::Reservations\Model{closure}()的参数1必须是保留\模型\选择的实例,Zend\Db\Sql\Select的实例,在第190行的/home/.../vendor/zendframework/zend-db/src/TableGateway/AbstractTableGateway.php中调用,在第99行的/home/.../module/Reservations/src/Reservations/Model/ReservationTable.php中定义

第99行是:

代码语言:javascript
复制
$this->num = $this->tableGateway->select(function (Select $select) {
        $select->columns(array('num' => new \Zend\Db\Sql\Expression('COUNT(*)')));
        $select->where(array('reservation_date' => $reservation_datetime));
    });

这段代码

代码语言:javascript
复制
class ReservationTable
{
    protected $tableGateway;

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

    public function saveReservation(Reservation $reservation)
    {
        $data = array(
            'reservation_date' => $reservation_datetime,
            ...
        );

        $reservation_spot = (int)1;
        $rsn = $this->getReservationCount($reservation_datetime);
        if($rsn < 4) {
            for($i=1; $i<4; $i++){
                if($rsn = $i) {
                    $reservation_spot++;
                }
            }
        }
        else {
            throw new \Exception('No available spots');
        }

    }

    public function getReservationCount($reservation_datetime)
    {
        $this->num = $this->tableGateway->select(function (Select $select) {
            $select->columns(array('num' => new \Zend\Db\Sql\Expression('COUNT(*)')));
            $select->where(array('reservation_date' => $reservation_datetime));
        });

        return $this->num;
    }    
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-06 08:15:47

您忘了包含来自Zend的Select类。在类的顶部添加这一行。

use Zend\Db\Sql\Select;

代码语言:javascript
复制
use Zend\Db\Sql\Select;

class ReservationTable
{
    protected $tableGateway;

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

    public function saveReservation(Reservation $reservation)
    {
        $data = array(
            'reservation_date' => $reservation_datetime,
            ...
        );

        $reservation_spot = (int)1;
        $rsn = $this->getReservationCount($reservation_datetime);
        if($rsn < 4) {
            for($i=1; $i<4; $i++){
                if($rsn = $i) {
                    $reservation_spot++;
                }
            }
        }
        else {
            throw new \Exception('No available spots');
        }

    }

    public function getReservationCount($reservation_datetime)
    {
        $this->num = $this->tableGateway->select(function (Select $select) {
            $select->columns(array('num' => new \Zend\Db\Sql\Expression('COUNT(*)')));
            $select->where(array('reservation_date' => $reservation_datetime));
        });

        return $this->num;
    }    
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32415429

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档