Zend 2 - TableGatewayWhere 子句

2023-12-30

您好,我正在尝试掌握 Zend 2,但我在表网关中的 where 子句方面遇到了一些问题。

下面是我的表类:

//module\Detectos\src\Detectos\Model\OperatingSystemTable.php
namespace Detectos\Model;

use Zend\Db\TableGateway\TableGateway;

class OperatingSystemsTable
{

    public function findOs($userAgent)
    {

        $resultSet = $this->tableGateway->select();

        foreach ($resultSet as $osRow)
        {
            //check if the OS pattern of this row matches the user agent passed in
            if (preg_match('/' . $osRow->getOperatingSystemPattern() . '/i', $userAgent)) {
                return $osRow; // Operating system was matched so return $oses key
            }
        }
        return 'Unknown'; // Cannot find operating system so return Unknown
    }
}

模型是这样的:

class Detectos
{
    public $id;
    public $operating_system;
    public $operating_system_pattern;

    public function exchangeArray($data)
    {
        $this->id                       = (isset($data['id']))                              ? $data['id']                       : null;
        $this->operating_system         = (isset($data['operating_system  ']))              ? $data['operating_system  ']       : null;
        $this->operating_system_pattern = (isset($data['operating_system_pattern']))        ? $data['operating_system_pattern'] : null;

    }

    public function getOperatingSystemPattern()
    {
        return $this->operating_system_pattern;
    }
}

我所拥有的有效,但我真的应该能够做类似的事情:

public function findOs($userAgent)
{

    $resultSet = $this->tableGateway->select()->where('operating_system_pattern like %' . $userAgent . '%';

}

但我无法找出正确的方法。

编辑(2012 年 12 月 11 日 07:53): 我从 Sam 的回答中尝试了以下内容,但出现了错误:

$spec = function (Where $where) {
    $where->like('operating_system_type', '%' . $this->userAgent . '%');
};


$resultSet = $this->tableGateway->select($spec);

但出现以下错误:

Catchable fatal error: Argument 1 passed to Detectos\Model\OperatingSystemsTable::Detectos\Model\{closure}() must be an instance of Detectos\Model\Where, instance of Zend\Db\Sql\Select given.

我还想补充一点,我已阅读文档并遵循教程。那里没有提到使用 Zend\Db\Sql 。我无法在 tableGateway 中使用高级 where 子句的示例。我可能遗漏了一些东西,但我认为这并不明显。


为什么人们忽视官方文档 http://framework.zend.com/manual/2.0/en/modules/zend.db.table-gateway.html#basic-usage?最简单的例子是这样的:

$artistTable = new TableGateway('artist', $adapter);
$rowset = $artistTable->select(array('id' => 2));

但是,您可以为 select() 函数提供一个类型的参数Zend\Db\Sql\Where. Again 这部分是官方文档 http://framework.zend.com/manual/2.0/en/modules/zend.db.sql.html#where-having有很大帮助。和Where你可以做更干净的代码,例如:

$where = new Where();    
$where->like('username', 'ralph%');

$this->tableGateway->select($where)

希望这对您有一点帮助。不要忽视文档! ;)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Zend 2 - TableGatewayWhere 子句 的相关文章

  • 如何在paginationControl中使用参数指定路由?

    我正在尝试在我的新闻源上创建分页 我的新闻提要有两种模式 所有新闻提要和按类别提要 所有新闻提要的分页工作正常 但我在 按类别提要 分页方面遇到问题 我这样使用paginationControl Route news category co
  • ZF2 - 需要在特定条件失败时显示特定错误消息

    我正在使用 ZF2 表单验证 我必须验证两个字段 用户名 和 密码 一切正常 但我收到类似的消息 Please enter username Username can not be less than 3 characters Please
  • ZF2 - Zend Framework 2,了解路由

    我正在尝试了解 ZF2 中的模块路由 目前我只能为单个操作创建一个控制器 并且正在努力找出这个路由 我查看了其他模块和插件 我有点明白了 只需要一点点推动就可以 得到它 在此示例中 我尝试路由到两个操作 indexAction 和 cmst
  • ZF2:Zend Framework 2 完整 URL(包括主机名)

    在我看来 我需要绘制完整的 URL 像这样 http hostename com default url 当我尝试使用时 this gt url default array 1 2 3 我只得到 index get 有没有任何 Zend 方
  • ZF2 SOAP“过程不存在”错误

    我在解决这个问题时遇到了严重的麻烦 我有一个包含 3 个模块的应用程序 这些模块通过 SOAP 提供不同的服务 发生的情况是 其中 2 个得到了以下响应 肥皂故障 文件 var www empreendimentos vendor zend
  • 如何从模型中获取 Zend\Db\Adapter 实例? (ZF2)

    我正在创建用于管理数据库实体的抽象模型 我已经有了EntityAbstract EntitySetAbstract and a ManagerAbstract楷模 在我的 ManagerAbstract 模型中 我需要一个Zend Db A
  • Zend Framework 2 可以/应该如何包含到 Git 版本化项目中?

    应如何管理 Zend Framework 2 项目的版本控制 是否有最佳实践 标准方法 子模块 是正确的关键字吗 Zend Framework 2 项目通常是一个轻量级框架应用程序 具有各种已安装的模块 这些模块通常位于单独的专用存储库中
  • 如何在 Zend Framework 2 中创建通用模块/控制器/操作路由?

    我想在 Zend Framework 2 中创建一个通用模块 控制器 操作路由 以便与 ZF2 MVC 架构一起使用 在 ZF1 中 默认路由的定义如下 module controller action 其中模块默认为default 控制器
  • 限制 Apigility 中的结果

    我使用 Apigility 创建了一个代码连接 API 现在我正在使用标准创建存根 在我的PostResource有一种方法叫做fetchAll params array 我为该方法创建了代码 以便它返回一组可分页的结果 var Hydra
  • Zend Framework 2 的注释命名空间未加载 DoctrineMongoODMModule

    我已经加载了 zf2 的 Doctrine MongoODM 模块 我的控制器中有文档管理器 一切都很顺利 直到我尝试保留文档 它因以下错误而失败 语义错误 SdsCore Document User 类中的注释 Document 从未导入
  • 在zf2中配置多个数据库

    如何在 Zend Framework 2 中配置 和使用 多个数据库 目前我的 global php 中有这个 return array db gt array driver gt Pdo dsn gt mysql dbname my db
  • 如何使用主义2和zend框架2中的缓存?

    请我在这里需要一些帮助 我已经搜索了很多但没有结果 我如何利用查询及其存储在memcache中的结果 我正在使用zend框架2和学说2 这是我在 module config php 中的配置 Doctrine config doctrine
  • 如何将 LESS 集成到 ZendFramework 2 中

    我已经发现本教程 https stephen rees carter net thought integrating less with zend framework the easy way这是为了Zend框架1 我下载少了放在下面项目
  • zf2 中的 Lucene 搜索

    Lucene Search 库是否已从 ZendFramework 2 中删除 因为我找不到它here https github com zendframework zf2 tree master library Zend UPDATE 它
  • 如何启动一个新的大型 ZF2 项目?

    我将使用 ZF2 创建一个新项目 事实上 我必须升级 ZF1 项目 但我决定从头开始 我的项目非常庞大 已经被来自世界各地的志愿者翻译成 10 种不同的语言 我遇到的困难是分析 ZF2 告诉我要遵循的模块结构 该软件允许 ISP 领域的中小
  • 如何在ZF2控制器中获取baseUrl?

    在我的 zf2 控制器中 我想检索应用程序基本 URL 例如http example com 我尝试了以下调用 但它返回一个空字符串 this gt request gt getBasePath 我怎样才能得到http example co
  • 通过 ServiceLocatorAwareInterface 注入 ServiceLocator 不起作用

    我读到实现 ServiceLocatorAwareInterface 将把 serviceLocator 注入到同一个类中 所以我得到了这个 Class MyModel implements ServiceLocatorAwareInter
  • 如何使用doctrine-orm-module和zf2从数据库模式生成实体

    我在用 学说 学说 orm 模块 0 7 0 https packagist org packages doctrine doctrine orm module与ZF2 创建实体后 我通常运行以下命令来根据我的实体自动同步和生成数据库 ve
  • zend框架中的一个模块中的多个控制器

    你好 我是 zend Framework2 2 0 的新手 我想创建一个带有多个控制器的模块我已经从 github 下载了 Album 模块并且它工作正常 现在我想在其中添加更多控制器 下面我显示了模块中文件的文件夹结构 module Al
  • 从 Zendframework 2 中的布局调用模型中的方法

    我尝试在 Zendframework 2 中调用模型表单布局中的方法来显示一些用户特定的内容 我尝试在 Module php 的 init 和 onBootstrap 中执行此操作 并尝试声明一些将在 layout phtml 中可用的变量

随机推荐