【问题标题】:Custom sql query in my existing ZF2 (Zend Framework 2) entity我现有的 ZF2 (Zend Framework 2) 实体中的自定义 sql 查询
【发布时间】:2013-05-23 13:59:12
【问题描述】:

我有一个以前已经有一个简单的 fetchAll() 方法的类。我从 ZF2 教程中得到它,它使用 ResultSet 和 TableGateway。只是现在我希望它接受一个我可以检查的参数,以便如果传递了客户 ID,它只会返回具有该客户 ID 的行。

这个方法是这样的:

public function fetchAll($CCID = null)
{
    if($CCID == null){
        $resultSet = $this->tableGateway->select();
        return $resultSet;
    } else {
        // Same as above, only where customerId = $CCID
        return $resultSet;
    }
}

我试过这个(添加使用 Zend\Db\Sql\Sql:

    $resultSet = $this->tableGateway->select->where(array('customerId' => $CCID));

这几乎是一个完整的猜测,但我尝试了它,因为它看起来很有意义。在我的模块文件中,TableGateway 工厂如下所示:

     'JobsTableGateway' => function($sm){
          $dbAdapter = $sm->get('Zend\Db\Adapter\Adapter');
          $resultSetPrototype = new ResultSet();
          $resultSetPrototype->setArrayObjectPrototype(new Job());
          return new TableGateway('runningjobs', $dbAdapter, null, $resultSetPrototype);
      },

有没有人知道如何像条件的第一部分一样基本上执行标准的 fetchAll(),除了“where”部分?或者也许有更好的方法?

【问题讨论】:

    标签: php jquery database zend-framework2


    【解决方案1】:

    阅读文档:

    http://framework.zend.com/manual/2.0/en/modules/zend.db.table-gateway.html

    公共函数选择($where = null);

    所以应该是这样的:

    $resultSet = $this->tableGateway->select(array('customerId' => $CCID));
    

    【讨论】:

    • 干杯,成功了!读过它们,但完全错过了。我对使用框架还是很陌生,所以阅读所有文档有时会让人不知所措。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多