问题标签 [doctrine-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 回答
21693 浏览

data-access-layer - 数据库抽象层和数据访问层有什么区别?

我实际上被困在三层结构中。我在网上冲浪,发现了两个术语“数据库抽象层”和“数据访问层”。

两者有什么区别?

0 投票
1 回答
7220 浏览

symfony - mysql tinyint(2) 的错误映射为 boolean 与学说

我使用 symfony2 对我的数据库进行了逆向工程,并使用命令对我的数据库进行了逆向工程:

但是我的字段被映射为布尔值而不是 tinyint(2)。

为什么它映射为布尔值?

0 投票
1 回答
144 浏览

regex - Symfony - addHaving - concat + regexp

原始查询:

查询生成器

问题:

如何用正则表达式收集 concat 不是函数?尝试使用 literal() 函数,但无法在无法分配的情况下创建应有的错误抛出。

0 投票
1 回答
863 浏览

php - 教义:从原始 SQL 中水合模型

我有以下自定义查询。我知道它很简单,所以它也可以用作 DQL,但我也有更复杂的。但我想知道方法,即使是更复杂的查询如何做到这一点。

当然有Job模型。

我想要的是:

Job 类的实例数组,使用原始 sql。像这样:

0 投票
1 回答
2869 浏览

doctrine-orm - 使用教义保存日期字段

在我的应用程序中,我将带有学说的数据保存到 mysql 数据库中。对我来说,保存日期而不是时间就足够了,因此我为我的数据库字段选择了日期格式。

在我的 Symfony 4 应用程序的实体中,它看起来像这样:

生成的 SQL 语句如下所示:

如您所见,添加了时间。这是您如何使用教义设置日期字段的方式吗?

我是否必须将其更改为 DateTime 或 Timestamp 字段?

我应该删除实体中的默认值吗?

https://www.doctrine-project.org/projects/doctrine-dbal/en/2.6/reference/types.html#date 说如下:

"date:映射和转换没有时间和时区信息的日期数据。如果你知道要存储的数据总是只需要一个没有时间和时区信息的日期,你应该考虑使用这种类型。从数据库中检索的值总是如果没有数据,则转换为 PHP 的 \DateTime 对象或 null。"

0 投票
1 回答
457 浏览

php - 使用 Doctrine/DBAL 迁移数据库时如何修复未知数据库错误?

我试图POS在迁移关系中建立一个系统。我Doctrine/DBAL在运行 migrate 之前使用它来建立关系。安装后Doctrine/DBAL运行迁移时出现未知database错误。如何修复此错误?

这是Laravel 5,当我运行迁移时运行错误:

0 投票
2 回答
253 浏览

php - Prooph Eventstore (PDO) 和 Doctrine DBAL 导致多个连接

情况

我在 Symfony 4.3 中将 Prooph 用于我的 commandbus、eventbus 和 eventstore。由于不是每个聚合都需要事件源,我们还使用 Doctrine DBAL 来简单地 CRUD 那些简单的聚合。

在给定的域中,我在我的命令总线中配置了命令/处理程序,它们使用事件源存储库或 DBAL 存储库。

当将此命令总线注入 CLI 命令时,这会在 CLI 上运行任何内容时导致多个数据库连接。

问题

当尝试删除/创建数据库(用于原始安装或重置测试环境)时,Postgres 拒绝,因为还有另一个活动连接。

  • 我尝试禁用所有具有事件源存储库的命令并且问题已解决。
  • 我尝试禁用所有具有 DBAL 存储库的命令并且问题已解决。
  • 我尝试不注入此命令总线,问题已解决。

因此,我可以有把握地得出结论,将带有 PDO 连接的服务与带有 DBAL 连接的服务结合使用时,问题就会出现。

解决方案(失败)

我想到的一个解决方案是将 Doctrine $connection->getWrappedConnection()DBAL 用于 Prooph Eventstore。显然 typehinting 不允许这样做(getWrappedConnection()返回一个-interface Connection),但如果它确实有效,实际的 Doctrine会PDOConnection扩展\PDO,我愿意在这一点上接受这个hackiness!但是,无济于事,仍然是2个连接。

0 投票
3 回答
1181 浏览

typo3 - TYPO3 QueryBuilder - 如何查找用户的最新记录?

这是一个非常明显的数据问题,但我在任何地方都找不到简单的解决方案。

使用 TYPO3 QueryBuilder,如何从每个用户有多个条目的表中为每个用户选择最近的条目?

我已经尝试了许多原始 SQL 方法,并最终找到了一种基于此解决方案的有效方法 - 如何在 SQL 中的另一列中选择具有 MAX(列值)、DISTINCT 的行?

但是我看不到如何在 QueryBuilder 中重现这一点,因为 ->join() 语句只接受表名作为参数,而不接受 SQL,并且 ->join() 只接受一个连接条件,而不是两个。

有没有其他人找到适用于 QueryBuilder 的解决方案?非常感谢

0 投票
0 回答
260 浏览

symfony - 带有空环境变量的教义 MasterSlaveConnection

当我运行时,php bin/console cache:clear我收到此错误:

The options 'driver' or 'driverClass' are mandatory if no PDO instance is given to DriverManager::getConnection().

当我们没有覆盖环境变量DATABASE_MASTER_URL&时,就会发生这种情况DATABASE_SLAVE1_URL。在我们的 gitlab 管道的步骤中,手头没有这些值,我们需要清除/预热缓存。

这里有趣的是:如果我删除奴隶的定义,一切正常。它只发生在我们定义从属的场景中。

附加信息 1 WrapperClass "MasterSlaveConnection" 完全符合需要,但只是迟到了。master它从配置中获取“驱动程序”并将其注入slave节点。

但这发生在被调用之后。 DriverManager::parseDatabaseUrlScheme

所以要么 1)我在这里做错了,文档有改进的余地,要么 2)有一个错误

0 投票
1 回答
290 浏览

typo3 - 使用未引用的命名参数时,TYPO3 抛出异常

我正在尝试使用未引用的参数(案例 1、1A)以类似 PDO 的样式使用准备好的语句执行原始查询,无论如何它都会引发异常:

执行 'SELECT * FROM pages WHERE title LIKE :title' 时发生异常:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 ':title' 附近使用正确的语法

此外,引用命名参数不起作用(案例 2),它不会引发异常,但也找不到任何东西。

根据需要使用未命名/编号和未引用的参数(案例 3、3A)或executeQuery()代替prepare()(案例 4)。特别是我想使用命名参数,最后一个是我的选择。

几个问题

  1. 为什么第一个案例在 PDO 继承之后不能像我预期的那样工作,或者 Doctrine实际上是如何做到的?
  2. executeQuery()使用而不是有一些缺点(如果有的话)prepare()吗?
  3. 我应该使用prepare()带编号的参数吗?
  4. 使用原始查询而不是 QueryBuilder 之间有什么显着区别吗?

笔记

我知道,为了正确使用模型数据和存储库,我可以/应该使用通用的 QueryBuilder 接口。这种情况适用于我的数据库中不使用数据映射的一些原始数据,我正在寻找一些性能改进。pages表在这里仅用于演示概念。