问题标签 [notorm]
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.
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 看起来可以用于获取数据,但我不知道是否可以为现有的数据库模式配置它,以及如何轻松地将数据放回数据库。
理想情况下,我想要一些简单的东西。例如:
或者:
欢迎任何提示甚至替代解决方案!
php - 如何在 notORM PHP 库上创建虚拟表
如何在 notORM PHP 库上创建虚拟表。例如,我想像这样制作 sql:
php - NotORM:如何获取数据?
我在使用选择时遇到问题,我尝试阅读文档,但不太清楚,谈论它的论坛很少且不活跃。
我想做一个简单的选择,所以我尝试了:
但是,这给了我一个 NotORM 对象,在该对象中我看不到执行正常操作时得到的结果行:SELECT id, group_title FROM user_types WHERE id = 1
我尝试使用 fetch() 但不确定如何使用它。有什么见解吗?
php - 动态查询检索
我正在使用 NOTORM 生成查询,在应用程序中有一种情况,用户可以选择字段、条件等,因此基本上可以提出自定义查询。这样,用户可以生成一个报告,例如“名字的人 = Jack 花费 > 800”。
我正在使用 NOTORM 生成此查询,但我想存储查询以供不使用 NOTORM 的应用程序的另一部分使用。是否有任何功能可以检索生成的查询?
这是 NOTORM 对象在生成和执行查询后的样子:
我可以做一些迭代'where'和'parameters'的脚本,但似乎不太优雅,特别是因为这些数组的顺序不正确(我必须做一些事情,比如用下一个项目替换每个“?”在“参数”中)...任何NOTORM函数?或者您建议的任何更优雅的方式?
这是 'where' 和 'parameters' 部分,以防你对最后一个选项有一些优雅的东西:
mysql - NotORM 的连接与多选
我正在查看这个名为NotORM的 PHP DB 库,在阅读它的文档后,我已经阅读了它关于连接的立场。争论基本上是单个 SQL 查询的性能与连接与使用多个选择查询然后交叉引用 DB 抽象层中的结果。
我一直都知道单个查询应该总是比使用多个查询更好,所以 NotORM 的想法对我来说是新的。我也不确定这一点,因为我只在 NotORM 中看到了这个“功能”。
想问问大家对这个问题的看法。
哪个查询更好更快?
这...
相对...
这第二种方法真的实用吗?
php - 在 NotORM 中使用 JOIN
一直在尝试以下代码
从http://sql-cross-queries.freexit.eu/dibi/notorm创建一个 JOIN 语句,但无济于事。我错过了什么吗?
我有报告(时间戳、事件 ID、位置 ID)、事件(事件 ID、事件描述、位置 ID)和位置(位置 ID、位置名称)。我试图通过加入报告、事件和位置来获取时间戳、事件名称和位置名称。所以我使用了以下语句:
但它没有返回任何东西。但是,以下声明:
返回报告。
php - NOTORM 自定义 mysql 函数
如何选择从现有字段计算的自定义值?
例如,我正在存储出生日期,并且我想选择从 mySql 函数计算的年龄。
php - 调试 NotORM 调用导致“使用未定义的常量 STDERR - 假定为 'STDERR'”
我正在调试一个在 PHP 5.4 上使用 Slim 和 NotORM 的项目。将 NotORM 设置为调试模式时,NotORM 跟踪语句:
引发以下错误:
我感觉问题是 Slim,因为执行 Php 命令行脚本时没有显示错误消息。
有谁知道如何解决这个问题(最好不修改 NotORM)?
提前致谢。
php - PHP 和大型 CSV 文件
我正在使用一个名为 parsecsv.lib.php 的库来读取 csv 文件。然而,这些文件的大小已经增长到大约 30MB。该库尝试将 csv 的全部内容加载到一个数组中,该数组正在变成具有超过 100,000 个元素的数组。这显然不好,所以我推出了自己的解决方案,如下所示:
这是一次读取一行并使用键作为标题保存,然后保存。
我的问题是,如果我将提供给我的保存方法的数据量分块,我是否会提高速度。现在它一次只有一个数组,但我可以给它一个数组数组并保存它们。我只是不确定分块数据是否有任何优势。任何有经验的人都有任何见解
这是保存方法: