问题标签 [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.
data-access-layer - 数据库抽象层和数据访问层有什么区别?
我实际上被困在三层结构中。我在网上冲浪,发现了两个术语“数据库抽象层”和“数据访问层”。
两者有什么区别?
php - 现有 PHP 应用程序需要一个简单的 ORM 或 DBAL
我正在扩展现有的 PHP 应用程序。对我来说不幸的是,现有的应用程序一团糟。这都是带有原始 mysql_* 调用的意大利面条代码。呻吟。我不可能在我正在扩展的部分中这样做。
所以,我正在寻找一个简单的 DBAL ORM,我可以轻松地投入并开始使用。所需功能:
- 它必须适用于现有的数据库模式。最好有最少的或没有额外的配置。现有的数据库模式与现有的 PHP 代码质量相同(没有合理的命名约定,未规范化等)。我不想花几天时间将数据库模式手动转换为带注释的对象属性,就像 Doctrine 2 一样。
- 它必须能够与现有的原始 mysql_* 查询一起工作。我不知道当脚本在背后手动操作数据库中的数据时,像 Doctrine 2 或 Propel 这样的水合 ORM 的行为如何,但我认为它并不漂亮。
- 它必须在 PHP 5.2.x 上运行。我很想使用PHP 5.3,但我对检查现有的 125K 行意大利面条代码混乱以确保它在 PHP 5.3 上运行的兴趣为零。
- 不需要关系。在我需要访问关系数据的少数几个地方,我很乐意自己调用一个额外的
find()
或query()
其他任何东西。 - 如果它有一些触发支持(例如
beforeSave
,afterSave
),则加分。不是要求,但很高兴拥有。
编辑:有人让我摆脱了痛苦。我刚刚发现 125K 行意大利面条代码也改变了数据库模式。例如,在某处添加一个额外的选项,大量的 ALTER TABLE 语句开始运行。我可能可以用这个代码库填满一年的 TheDailyWTF。所以,还有一个要求:
- 必须能够自动应对不断变化的数据库模式(例如添加列)。
我一直在寻找一些解决方案,但我不确定在满足要求的情况下它们的效果如何。Doctrine 2、RedBeanPhp 之类的都需要 PHP 5.3,所以它们被淘汰了。有用于 PHP 5.2.x 的 RedBeanPhp 的旧版本,但我不知道它是否适用于混乱的现有数据库模式。NotORM 看起来可以用于获取数据,但我不知道是否可以为现有的数据库模式配置它,以及如何轻松地将数据放回数据库。
理想情况下,我想要一些简单的东西。例如:
或者:
欢迎任何提示甚至替代解决方案!
mysql - 教义自定义数据类型
我正在使用 Symfony2 开发应用程序。Symfony2 将 Doctrine 2 用于 DBAL 和 ORM。据我所知,Doctrine2 不支持 BLOB 数据类型。但是我想通过自定义数据类型映射来实现 BLOB 支持:
http://www.doctrine-project.org/docs/dbal/2.0/en/reference/types.html
但是我很难理解这部分应该去哪里。
有人经历过吗?
我需要 BLOB 类型的原因是我想从现有的 MySQL 数据库中导入映射。
php - Doctrine2 DBAL 的良好替代 DBAL
我有一个设置为使用 Docrine2 DBAL 的简单应用程序,问题是它需要在仅支持 php 5.2.6 的主机上运行。教义需要 PHP 5.3...
什么是 PHP 的一个好的替代数据库抽象层?我应该简单地将所有内容都转换为 PDO 吗?或者还有其他好的选择吗?
谢谢。
php - 扩展学说:build --db 创建数据库视图
我正在使用 Doctrine 1.x 开发一个 Symfony 1.4 项目,以及值得使用 Doctrie_View(作为本机 MySQL 视图的接口)的功能。
据我了解,必须使用 Doctrine 创建视图(在 DB 视图中,而不是在 MVC 中的视图),以便 Doctrine 可以维护视图与派生它的原始模型之间的关联。
在理想的世界中,我希望将视图创建为symfony doctrine:build --db
任务的一部分。明智的做法是使用观察者模式和 Symfony 的事件调度程序,但是,内置事件列表似乎没有提供数据库模式何时构建的事件。
那么,在构建模式时创建 Doctrine View 的最佳方式是什么?
或者,如果这不是一个选项,请检查 View 是否不存在,然后将其创建为ProjectConfiguration::configureDoctrine()
?
php - 想使用 Doctrine DBAL
我想使用 Doctrine DBAL ,我从一个站点下载了 DBAL 文件夹。并将文件夹放在我的服务器上。然后将此代码写入我的文件中。
给我这个错误。
请建议我需要使用 dbal。
谢谢
php - 为我的框架选择正确的数据库系统
最近我一直在研究一个基于 MVC 的框架,该框架目前已经完成了一半,我现在正处于研究应该使用哪个数据库抽象层的阶段。
在我的大多数项目中,我通常只使用 PDO 作为父类,并具有带有一些集成辅助函数的自定义结构。
但我必须与时俱进,ORM 应该在 DBAL 的这些天大,但我从来没有使用它,我了解 ORM 的概念,我认为它很甜蜜,但我坚持要做什么。
我的框架源代码可在此处获得,因此您可以查看它是什么类型的系统,目前没有 DBAL 什么,只有模型加载器等。
我是否应该坚持我所知道的,并使用带有一些额外功能的 PDO 以获得良好的衡量标准。
或者我应该冒险进入未知领域并使用基于 ORM 的 DBAL,如果您建议我应该冒险,我有一些关于使用它的问题。
首先,我知道 StackOverflow 上有很多关于“最佳 ORM”的问题和答案,但考虑到以下几点,你有什么建议?
- 轻巧且经过良好测试
- 能够与模型集成
- 有多种驱动程序可供选择
- 有它自己的范围或至少以它的供应商名称为前缀
我看过 RedBeans,我喜欢那里的概念,但是有很多功能在模型之外无法实现。
你有什么建议?
php - PHPbb DBAL 拒绝执行正确的 PHP 和 SQL
如果你看到这个,你很可能看到了我的最后一个问题。
所以从那里我取得了进展。我已经意识到 SQL 很好,并且导致问题的是PHPbb 的 DBAL。我还注意到我正在使用启动dbal类的 usercake 等等。出于某种原因,以下代码有效:
但是这段代码没有:
有关FUideas
表格的信息,请参阅我以前的帖子。
我知道 sql 可以工作,因为如果我使用普通 php,它就会执行:
任何解决此问题的方法都非常感谢
如果您需要更多信息,请询问,我也会在线,所以如果您想尝试测试,只需发布代码,我会尝试。
编辑
0
因此,如果我用 a或填写其他字段,我就可以正常工作''
,任何人都可以解释这种行为吗?
php - 如何使用 Doctrine DBAL?
我有这个文件夹结构
我在文档中尝试了代码
我收到警告:
还有一个错误:
我对 PHP 命名空间了解不多。阅读 PHP 手册中的 PHP 命名空间仍然无法解决问题。如果我想将 Doctrine DBAL 与该目录结构一起使用,该代码是否正确?
php - 原则 DBAL 交易
我真的不明白如何在 DBAL 中进行交易
我有以下脚本将根据行的 id 更新列。我放了一个在表中不存在的假 id,(因此无法进行更新)但是尽管它是一个事务,但第一次更新被提交。如果其中一项失败,我希望所有交易都会失败。
预期结果,没有更新,因为 id = 120 的行不存在 真实结果,所有行都被更新,除了不存在的行。
我提前道歉,但面向对象编程对我来说仍然是南极洲。