zf2 在两个不同的数据库之间建立连接

2023-12-07

我正在尝试使用 Zend Framework 2 在放置在不同数据库中的两个表之间进行联接。

第一个表称为users并存储在数据库中admin

第二个表称为等级制度并存储在数据库中customer

我在 global.php 中加载数据库适配器

return array(
'admin' => array(
    'driver' => 'Pdo',
    'dsn' => 'mysql:dbname=admin;host=localhost',
    'driver_options' => array(
        PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''
    ),
),
'customer' => array(
    'driver' => 'Pdo',
    'dsn' => 'mysql:dbname=customer;host=localhost',
    'driver_options' => array(
        PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''
    ),
),
'service_manager' => array(
    'factories' => array(
        'Zend\Db\Adapter\Adapter'
        => 'Zend\Db\Adapter\AdapterServiceFactory',
    ),
),

);

但是当我尝试使用此函数加入 UserDao 时:

public function getSelect(Hierarchy $hierarchy) {
    $select = $this->tableGateway->getSql()->select();
    $select->where(array('level' => $hierarchy()->getId()));
    $select->join(array('h' => 'hierarchies'), 'h.id = users.idHierarchy', array('hierarchyId' => 'id', 'level' => 'level'));
    return $select;
}

这会生成这个 SQL 语句:

SELECT "users".*, "h"."id" AS "hierarchyId", "h"."level" AS "level" FROM "users" INNER JOIN "hierarchies" AS "h" ON "h"."id ”=“用户”。“idHierarchy”其中“级别”=“1”

但当我尝试使用它时它会抛出此异常:

Zend\Db\Adapter\Exception\InvalidQueryException
SQLSTATE[42S02]: Base table or view not found: 1146 Table 'admin.hierarchies' doesn't exist

我尝试在连接中指示数据库的名称,如下所示:

$select->join(array('h' => 'customer.hierarchies'), 'h.id = users.idHierarchy', array('hierarchyId' => 'id', 'level' => 'level') );

但它也会抛出这个异常:

SQLSTATE[42S02]:未找到基表或视图:1146 表“admin.customer.hierarchies”不存在

我发现这个网站解释了如何做到这一点,但它仅对 Zend Framework 1 有效,而我正在使用 Zend Framework 2。

在 Zend Framework 中使用不同的数据库

有人可以帮助我吗?请。

Thanks!


看起来这个问题不久前就被问过,但我似乎找到了一个很好的解决方法或解决方案。如果您使用 Zend\Db\Sql\TableIdentifier 和 Zend\Db\Sq\Expression,您将能够解决您的问题。

public function getSelect(Hierarchy $hierarchy) {
    $select = $this->tableGateway->getSql()->select();
    $select->where(array('level' => $hierarchy()->getId()));
    $select->join(
         array('h' => new TableIdentifier('hierarchies', 'admin')), 
         new Expression('h.id = ?', 'users.idHierarchy', Expression::TYPE_IDENTIFIER), 
         array('hierarchyId' => 'id', 'level' => 'level')
    );
    return $select;
}

我不确定您的层次结构表位于哪个数据库中,所以我现在使用“admin”。您可以将其替换为您拥有的任何数据库名称。看看它是否适合你,似乎对我很有效。

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

zf2 在两个不同的数据库之间建立连接 的相关文章

  • Zend Framework 2 的注释命名空间未加载 DoctrineMongoODMModule

    我已经加载了 zf2 的 Doctrine MongoODM 模块 我的控制器中有文档管理器 一切都很顺利 直到我尝试保留文档 它因以下错误而失败 语义错误 SdsCore Document User 类中的注释 Document 从未导入
  • Zend Framework 2 - 分页

    如何获取控制器操作中的页面详细信息 我使用了专辑的分页 iteratorAdapter new Zend Paginator Adapter Iterator this gt getAlbumTable gt fetchAll pagina
  • Zend Framework 2 - Hydrator 策略未响应且水合

    我基本上实现了这个策略 https github com zendframework zf2 pull 2072 主要区别是 我猜 我使用Doctrine2 调用构造函数类 打印测试回显 但两个函数extract and hydrate 不
  • Zend 框架 2 文件下载

    我制作了一个表单来将文件上传到文件夹 data uploads使用Zend Filter File RenameUpload filter 这就像一个魅力 我现在的问题是如何提供这个文件给用户下载呢 我认为它会是这样的 response g
  • 如何将 LESS 集成到 ZendFramework 2 中

    我已经发现本教程 https stephen rees carter net thought integrating less with zend framework the easy way这是为了Zend框架1 我下载少了放在下面项目
  • 如何从 zendframework 2 中的控制器插件中获取控制器?

    我正在 zf2 中编写一个控制器插件 我使用以下方法从插件内获取控制器 但它返回 null controller this gt getController 有什么建议吗 请注意 这个答案基于我使用 ZF1 的经验 并快速浏览了 ZF2 代
  • ZF2 Zend\Db 使用 Mysql 表达式插入/更新(Zend\Db\Sql\Expression?)

    有没有办法通过 Zend Db 和 或 TableGateway insert update 语句在 ZF2 2 0 0beta4 的当前版本中包含像 NOW 这样的 MySQL 表达式 这是邮件列表上的相关帖子 但尚未得到答复 http
  • 动态更改 Fieldset Fields 所需的参数

    我有一个货币字段集有 2 个字段 金额和货币 class MoneyFieldset public function construct name null options array parent construct name optio
  • 如何启动一个新的大型 ZF2 项目?

    我将使用 ZF2 创建一个新项目 事实上 我必须升级 ZF1 项目 但我决定从头开始 我的项目非常庞大 已经被来自世界各地的志愿者翻译成 10 种不同的语言 我遇到的困难是分析 ZF2 告诉我要遵循的模块结构 该软件允许 ISP 领域的中小
  • 使用 ZF3 在模块引导程序中无法访问视图助手管理器

    Using Zend Framework 2我可以访问ViewHelperManager这样做 public function onBootstrap MvcEvent e viewHelperManager e gt getApplica
  • zend框架中的一个模块中的多个控制器

    你好 我是 zend Framework2 2 0 的新手 我想创建一个带有多个控制器的模块我已经从 github 下载了 Album 模块并且它工作正常 现在我想在其中添加更多控制器 下面我显示了模块中文件的文件夹结构 module Al
  • 使用 Zend Framework 2 生成 PDF 文件 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我现在开始学习 ZF2 并注意到 zend Framework 2 上没有 Zend Pdf 或类似内容 如何在此版本的框架上创建 pdf
  • ACL授权失败后ZF3重定向

    我有一个带有 ACL 的新 ZF3 应用程序 现在 我需要在未经授权的访问的情况下重定向到错误页面 例如 403 我认为最好的方法是触发一个事件 然后捕获它 但我失败了 全部都在我的用户模块中Module php 摘录 namespace
  • Zend 2:如何覆盖模块的配置文件?

    如何覆盖 vendor module name config module config php 下找到的配置文件 不 这个link http akrabat com zend framework 2 overriding module c
  • 如何在 zend Framework 2 中禁用渲染视图?

    我想使用一些 ajax 但我不知道如何使用与 zend Framework 2 中的 setNoRender 相同的函数来禁用渲染视图 如何在 zend Framework 2 中禁用渲染视图 要禁用您的视图 public function
  • zend框架验证模型中的数据而不是表单中的数据

    使用 Zend Framework 2 在我的应用程序中 要编辑数据库中的数据 可以编译 html 表单或发送 http post 请求 我的服务器作为 Web 服务实现 在第二种情况下 不会呈现表单 问题 如果当服务器收到不是从表单发送而
  • ZF2:如何将参数传递给转发插件,然后我可以在转发它们的方法中获取这些参数?

    我有一个 Action 方法Foo需要参数的控制器 public function fooAction one two a one b two 我需要从某些方法的其他方法转发到该方法Boo控制器 这些参数之一必须是引用参数 唯一的例子就是手
  • ZF2 路由与 ZF1 相同

    如何使路由自动适用于 ZF1 结构中的所有内容 模块 控制器 操作 par1Name par1Val par2Name par2Val 我阅读了有关路由的信息 但在我看来 我必须手动添加所有操作 并且我发现可选参数存在问题 您可以至少在每个
  • ZF2 路线参数带斜杠

    是否可以使用包含正斜杠的参数来组装路由 Config someroute gt array type gt Zend Mvc Router Http Segment options gt array route gt someroute p
  • ZF2 查看攻略

    我正在尝试执行以下操作 简单的控制器和动作 Action 应根据请求返回 2 种类型的响应 HTML in case of ordinary request text html JSON in case of ajax request ap

随机推荐

  • 无法推导出模板参数(向量、std::function)

    我创建了一个模板化函数 我试图自动推导模板参数 MCVE 编译它 template
  • 当隔离被杀死时,颤振隔离内的计时器不会停止

    我有一个应用程序使用 API 调用将操纵杆位置数据上传到网络服务器 当操纵杆移动时会调用此方法 如果操纵杆不在中心 它将停止任何先前运行的隔离并启动新的隔离 void onJoystickMoved double angle double
  • 在 FormFlows - Bot Framework 中添加另一个 Quit 关键字

    是否可以使用 Bot Framework 更改 FormDialog 中退出突击队的关键字 我想在键入某个单词时抛出 FormCanceledException 不使用英语作为语言 如果我可以更改关键字 或者添加另一个与退出相同的关键字 那
  • 安卓图像按钮

    如何创建一个没有文本且图像水平居中的按钮 我不想使用图像按钮 因为我想定义不同的背景图像 您只需使用 ImageButton 并将背景设置为您想要的任何内容并将图标设置为 src
  • Tinder 像泛 iOS

    对于 iOS 中的 Tinder 应用程序 我假设他们在图像视图上使用平移手势识别器 为什么用户开始移动的图像下方会显示另一张图像 他们是否有另一个图像视图 并且在手势识别器完成后 动态设置图像视图手势识别器 最后在下面创建另一个图像视图
  • 使用自定义名称创建 Python 动态函数

    如果这个问题已经提出并得到回答 我们深表歉意 我需要做的概念非常简单 但不幸的是我无法在网上找到答案 我需要在运行时使用自定义名称在 Python Python2 7 中创建动态函数 每个函数的主体也需要在运行时构造 但对于所有函数来说 几
  • Stripe Payment API 与 Jetpack Compose 集成

    我不明白如何将 Stripe API 集成到 Compose 应用程序中 这是 Stripe 提供的代码片段 class CheckoutActivity AppCompatActivity lateinit var paymentShee
  • 如何检测可可中的右键单击和左键单击

    我想创建一个点击鼠标右键和左键的动作 单击可能会在 NSTableViewCell NSView 等上 就像我们右键单击窗口时会弹出一个窗口 有没有API可以完成这样的任务 如果没有 还有其他办法吗 预先感谢您对我的帮助 你必须覆盖NS响应
  • pickling 和 unpickling 用户定义的类

    我有一个用户定义的类 myclass 我将其存储在文件中pickle模块 但我在解封它时遇到问题 我有大约 20 个相同结构的不同实例 我将它们保存在不同的文件中 当我读取每个文件时 代码适用于某些文件 而不适用于其他文件 当我收到错误时
  • 计算大圆距离矩阵

    dist coords 使用欧几里得距离提供距离矩阵 它还提供了其他几个选项 但它没有提供任何选项 例如半正矢公式 distHaversine 计算给定的两组纬度 经度坐标我想要的距离 大圆 我想知道是否有一个现有的包 函数可以使用半正矢公
  • 如何在接口中公开方法而不将其公开给所有类

    我遇到一个问题 我正在使用特定的界面来处理很多事情 但是 我有一个特定的方法 我希望它仅适用于特定的一组类 基本上是一个internal方法 interface IThing function thisMethodIsPublic void
  • 无法在 Laravel 8 bootstrap 上编译 sass 文件

    当我尝试在 Laravel 版本 8 上编译引导脚手架时 出现以下错误 node modules bootstrap scss mixins grid scss 67 16 row cols node modules bootstrap s
  • Sass ID 选择器在 React 和 create-react-library 中不起作用

    我有一个正在制作的图书馆Header组件和一个Button成分 我给了他们 ID 以在我的 SASS 文件中识别他们 这是我目前的情况 index js import React from react import styles modul
  • lex & yacc 获取当前位置

    在 lex yacc 中有一个名为 YY INPUT 的宏 可以重新定义 例如以这样的方式 define YY INPUT buf result maxlen do const int n gzread gz yyin buf maxlen
  • 使用 sed 删除最后一个换行符[重复]

    这个问题在这里已经有答案了 怎么删除最后一个 n从一个文件 该文件有一个最后一个空行为最后一个文本行中的换行符创建 我正在使用这个命令 sed s d 但那个空白行没有被删除 Why is sed打印换行符 当你读到sedPOSIX标准 然
  • 在 Android 的默认媒体播放器中显示图像

    这是我的代码 首先 我录制了一个音频文件并开始播放 用于播放音频文件 play the recorded audio public void playAudio try Intent intent new Intent android co
  • 如何将 Android Studio 项目从 Windows 传输到 Mac OS X?

    我正在尝试将 Android Studio 项目从 Windows 计算机传输到 Mac 我将进入我的 Android Studio 项目 选择整个文件夹 MyApplication 然后复制到外部硬盘驱动器 当我在 Mac 上时 我尝试在
  • @ViewScoped bean 在 JSF 中如何以及何时被销毁?

    的生命周期 RequestScoped and SessionScopedBean 管理豆由 Servlet 容器本身管理 因为它们基本上存储为HttpRequest and HttpSession分别 JSF 如何管理应用程序的生命周期
  • Bing 地图 V8 - 未捕获的引用错误:Microsoft 未定义

    我在我的应用程序中使用 bing 地图进行搜索 必应地图V8控件 我用过这个CDN 之后当我尝试使用 Microsoft Maps 时 它是在说 Uncaught ReferenceError Microsoft is not define
  • zf2 在两个不同的数据库之间建立连接

    我正在尝试使用 Zend Framework 2 在放置在不同数据库中的两个表之间进行联接 第一个表称为users并存储在数据库中admin 第二个表称为等级制度并存储在数据库中customer 我在 global php 中加载数据库适配