问题标签 [dbal]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
6193 浏览

symfony - Symfony2 / Doctrine 使 $statement->execute() 不“缓冲”所有值

我有一个像这样的基本代码集(在控制器内):

我的困难是,当结果集只有几条记录时,内存使用情况还不错。我在运行$statement->execute();之前和之后回显了一些调试信息;部分代码,并为我的实现发现我有以下内容:

当从 1000 条记录上移到 10k 时,MB 使用量的差异增长到 13 MB

最终,检索大约 50k 条记录时,我接近了我的最大内存分配:

有了这个实现,我就无法编写一个控制器(甚至是命令)来让我检索 CSV 数据。当然,50k+ 条目听起来很多,问题是为什么,但这不是问题。

我的最终问题是:是否可以告诉 DBAL/Connection 或 DBAL/Statement 在执行时缓冲 SQL 中的数据而不是整个 PHP 中的数据。例如,如果我有 1000 万行,只将前 10k 行发送到 PHP...让我通过@statement->fetch();来查看它们。当光标到达 10k 的末尾时,截断数组并从数据库中获取下一个 10k?

0 投票
2 回答
97 浏览

php - Symfony 2.5 和自己的模型

在 Symfony 中,我使用默认的 ORM 原则,但是这个工具不能给我足够的方法来处理不同的情况。我想编写自己的类并使用 DBAL 之类的东西,仅用于进行自定义 SQL 查询并获取结果的连接。谁能给我一些例子?我应该使用哪些类来制作模型层,扩展我的功能。

0 投票
4 回答
1725 浏览

php - Symfony 控制台应用程序:依赖注入

这里是 Symfony 新手。在阅读了一些 Symfony 文档和 SO 的一些答案之后,我现在几乎完全糊涂了。我正在尝试使用控制台应用程序组件并创建一个小型 db-aware 控制台应用程序。

许多人说,为了使用 Symfony 的 DI 功能,我的命令类不是从 Symfony\Component\Console\Command\Command 而是从 ContainerAwareCommand 继承就足够了。但是,当我尝试此操作时,我在 application::getKernel() 调用上收到 Method Not Found 错误。

我感觉 DI 功能实际上在基于控制台组件的控制台应用程序中不可用。是否还有另一种基于成熟框架的 Symfony 控制台应用程序?

我非常喜欢控制台组件 Symfony\Component\Console\Application 提供的简单框架。但问题是——依赖注入和 DBAL 该怎么办?我发现的所有示例似乎都引用了完整的 Symfony 框架,让我更加卡住了。

0 投票
0 回答
477 浏览

mysql - 在 dbal 中关闭语句时发生错误

在我的 silex 网络应用程序中,我有这个功能:

但是当我调用这个函数时,我收到了这个错误:

有人可以帮我解决这个错误吗?

0 投票
2 回答
544 浏览

mysql - DBAL Connection query() 函数和 SELECT FOR UPDATE, LOCK

我正在尝试使用 DBAL 连接查询功能在 mysql 中执行“SELECT FOR UPDATE”查询。

我在一个 symfony 项目中,我做了以下测试:

我的控制器中有这两个功能:

我在浏览器中调用第一个 url(test),然后在另一个选项卡中调用第二个(test2)。

我的问题是第二个立即返回答案而无需等待 20 秒的延迟......

有人看到我错了吗?

谢谢。

0 投票
0 回答
110 浏览

symfony - 在 Symfony 2 的运行时使依赖项可配置?

在我的可重用包中,我可以指定一个连接名称(Doctrine DBAL 连接):

在扩展中,我给它起了别名

并在需要的地方注入它(捆绑包中的 4-5 个服务)。一切正常。

不幸的是,事实证明应该(可能)在运行时更改连接,即在用户通过身份验证之后(即使用 HTTP 基本身份验证)。当用户名是foo,然后使用 foo_database,当然barbar_database

我的解决方案(解决方法):

现在我正在使用事件系统对其进行更改:当捆绑中的某些内容使用Connection对象时,我会发出一个事件,即MyBundle::BAR事件。侦听器可以使用 更改连接setConnection(Connection $connection)。然后在我的包中,我使用更新的连接调用getConnection()

然而,这个解决方案迫使我监听需要更改连接的每个事件。如果我忘记收听MyBundle::FOO事件怎么办?我的应用程序无法按预期工作,并且错误将难以理解和跟踪。

有没有解决这个问题的好方法?

0 投票
1 回答
445 浏览

sql-server - 按顺序获取 Sql Server 错误 - Symfony2

将 Symfony 与 Sql Server 一起使用,从我读过的内容来看,与数据库的连接似乎不稳定。

一旦我使用 orderBy 方法,我就会收到一个错误:

这是一个例子:

和错误:

我试图通过在网上找到的更正来更改 SQLServerPlatform 类,但没有成功。

你有什么主意吗?

谢谢 !

编辑 :

此错误似乎与第二个参数为 true 的分页器有关。将其传递给false,我没有错误

0 投票
0 回答
384 浏览

php - Doctrine DBAL 共享实体存储库最佳实践

我一直在从事一些 PHP 项目(网站、轮询脚本、AMQP 服务等),并且都与每个项目相关,因此数据库模式中有一些重叠。到目前为止,我一直在使用 Doctrine DBAL 来生成我的模式(使用 SchemaManager)和通过(非 ORM)实体和存储库类进行数据访问。

我的问题是关于找到一种更好的做法来在我的平台上存储/共享与数据库相关的对象。

例如,该项目的网站端当前包含几个所需表的架构,这提供了在我启动另一个实例服务器时自动构建我的表的好处。在一个单独的项目中,我构建了一个监控服务,并在该项目中定义了存储设置所需的表。这一切看起来都很好,但是我现在希望在网站上建立一个管理页面,它允许我更新监控服务表中的记录。

我真的不想将监控系统代码包含到网站代码库中(通过作曲家),只是为了共享存储库和架构,所以我正在寻找更好安排的想法。

我的第一个想法是创建一个单独的“共享模式”项目,其中包括系统范围的数据库类,因此我的所有模式文件、存储库和实体都位于一个位置,但是我不确定这是否明智。我担心的是,如果我通过作曲家将其加载到所有项目中,那么每次我更改架构等中的某些内容时,我最终将不得不更新几个项目。

如果您对如何最好地处理这种情况有任何具体问题或建议,请告诉我。

谢谢

0 投票
1 回答
2157 浏览

php - 使用 Doctrine Query Builder 插入记录

我想使用 Doctrine 的 DBAL 查询生成器将记录插入数据库。

我发现这实际上可以在最新的文档中通过insert方法: http ://docs.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/query-builder.html#building-a -询问

但是,我通过 Composer 安装了最新版本的 DBAL,它没有这样的方法。

这是为什么?

我的替代方案是什么?

0 投票
1 回答
480 浏览

php - 在应用程序初始化时获取教义 dbal 为空

我正在使用身份验证成功处理程序在每次成功登录时填充会话中的一些值。我想要完成一些数据库操作,所以我从我的配置文件中传递了@doctrine.dbal.default_connection。这是我的配置文件,我在其中覆盖了 success_handler 函数。

在 AuthenticationSuccessHandler.php 我的代码是这样的......

当我直接执行一些控制器 URL 时,这是有效的。但是当我执行我的应用程序主页 URL 时,例如“www.xyz.com/web”,它会引发以下错误......

知道如何解决吗?