问题标签 [database-abstraction]

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 投票
4 回答
4345 浏览

php - 使用 PHP PDO 设计数据库抽象类

我正在设计一个 Web 应用程序(真的,这是一种爱好,我正在尝试自学设计,还有什么比这样做更好的方法 :)。无论如何,我正在考虑如何处理我的数据库。我对PDO很满意,并且我正在考虑在我的抽象类中利用 PDO。我正在考虑制作一个单例,以便只有一个数据库连接。这个单例将创建一个 PDO 连接。

在那之后,我不明白为什么我需要做太多其他事情。然后我可以使用数据库处理程序来调用 PDO 函数。我可能需要一些辅助函数,但是当它真正开始时,我只会使用 PDO 来进行实际的 SQL 查询。

这种方法有问题吗?与我使用的抽象类相比,它似乎过于简单。

0 投票
1 回答
236 浏览

php - 数据库访问抽象类

目前,我有一个名为 的数据库访问类DB,它使用PDO. 然后我有一些子类来访问每个表:

  • Users
  • Images
  • Galleries
  • Text
  • Videos

当我第一次开始我的项目时,这很好,但现在我不确定它是否那么好,因为我在每个类中使用的每个数据库查询都有一个方法。例如:

反正你懂这个意思。随着对它们的需求出现,我一直在添加这些方法,并且在开发中,我首先使用DB类:

所以,我用我的 DB 类测试查询,然后当它们工作时,我将它们包装在与之相关的类的方法中(图像表的图像类,画廊表的画廊类等)。

我觉得这会随着我稍后添加新功能而不断增长(这可能没问题,但我不确定)。有人可以批评我的方法和/或提供替代解决方案吗?

谢谢!

0 投票
4 回答
1529 浏览

php - Drupal中的跨数据库表连接?

是否可以在drupal中进行跨数据库连接?

假设您有两个数据库,drupal并且old_data_source. 你想加入drupal.nodeold_data_source.page.

db_set_active()可以调用以使用多个数据库。但是找不到有关跨数据库表连接的任何信息!

(我正在将其作为迁移脚本的一部分进行研究,并将删除old_data_source

0 投票
16 回答
43580 浏览

c++ - “数据抽象”到底是什么意思?

数据抽象指的是什么?请提供现实生活中的例子。

0 投票
6 回答
62788 浏览

php - 在 Codeigniter 中计算数据库查询返回的结果数

当 Codeigniter 中的数据库查询返回零结果时,我没有太多运气检测。我已经很好地阅读了关于 PHP 计数函数的注释,但我没有更聪明!

我从控制器调用查询/视图如下:

该视图为我生成了一个结果表,但是当我尝试捕获一个空结果时,计数​​始终返回 1:

我试过if count(array($result))if count($result)

那么有什么好方法来计数呢?我在我的开发笔记本电脑上使用 Fedora 13 和 PHP 5.3.3。

0 投票
1 回答
2220 浏览

php - 有没有办法使用 PHP-ActiveRecord 作为 symfony 的 ORM/抽象层?

我刚刚发现 PHP-ActiveRecord 不久前,在努力编写自己的 ORM 近一个月后(我就是那样头脑清醒),我爱上了它。我以前看过 Doctrine and Propel,但由于其复杂性和学习曲线,我决定离开。有了 AR,我就没有和其他人一样的焦虑和学习困难了。

此后不久,我还发现了 symfony 框架(我也尝试从 stratch 制作自己的框架,因为发现其他框架过于臃肿)。但是,我有一个问题:symfony 框架使用 Doctrine 和 Propel 作为开箱即用的 ORM/抽象层,而没有任何关于如何更改它的文档。

我还没有真正使用过symfony,我一直在阅读“温和介绍”一书。ORM/抽象层似乎从 symfony 的核心中移除了,并且似乎很容易转换所有内容。问题是……是吗?

有没有人有任何使用 ActiveRecord 和 symfony 的经验,甚至使用 Doctrine/Propel 和 symfony 以外的任何东西?

0 投票
3 回答
4474 浏览

php - 使用 Doctrine for PHP 的优势?

刚刚遇到了具有对象关系映射器和数据库抽象层的Doctrine项目。Doctrine 提供了其他 PHP 抽象层没有提供的什么?除了通过用 Doctrine Query Language 编写的查询来获取对象之外,您还能将 ORM 用于什么实际用途?查询语言真的是您想要开发整个网络应用程序的东西吗?它表现良好吗?

总体而言,在 Doctrine 上构建应用程序是否更易于维护和理解?它是否过度设计,是否建立在适合中小型项目的抽象层上?(<50 个 GUI 屏幕),而不是直接使用 MySQL。

0 投票
1 回答
8860 浏览

php - 未找到 Pear DB 类

我创建了一个名为 Database.php 的类,用于使用 Pear Db 类与 MySql 数据库进行交互。

数据库.php

我从一个示例文件 test.php 中调用这个类

测试.php

当我运行 test.php 时,出现以下错误

警告:require_once(/usr/share/pear/DB.php):无法打开流:第 2 行 /var/www/Avatar/Database.php 中没有此类文件或目录致命错误:require_once():需要打开失败'/usr/share/pear/DB.php' (include_path='.:/usr/share/php:/usr/share/pear') 在 /var/www/Avatar/Database.php 第 2 行

我不知道为什么我会收到这个错误。在 phpinfo() 它显示include_path .:/usr/share/php:/usr/share/pear .:/usr/share/php:/usr/share/pear

我正在使用php5,我什至尝试安装php-pear包,但我仍然得到同样的错误。我不明白这里有什么问题。有人可以指出我正确的方向。

注意: 我还没有使用 .php 安装 php5 sudo apt-get install php5。我已经使用Keryx应用程序下载了 php5 包。

0 投票
2 回答
1616 浏览

php - How to call a models database query in a javascript function in a view?

On my user inbox from my user messaging system I am building a feature where a user can make an email message a favourite message.

I have created 2 methods in my messages model. One updates the 0 in the 'messages' table, 'favourite' column to 1 which would mean the user wants the message to be a favourite. Also the image the user clicks on to make the message a favourite turns from grey to colour.

Then I do this same process again if a user wants to make the message not a favourite. The 1 is updated to a 0 and the image turns greyed out again.

Below is my jquery/javascript that basically does something if the box is checked (image is in colour) and something else if the box is not unchecked (image greyed out).

What I am trying to figure out is the best way to called my 2 db queries in my model:

What would be the best way to do this? Calling a model directly in a view is bad practice isn't it?

So how could I achieve what I would like to achieve?

Could a controller act as a middle man?

If so how would I even call a controller in a javascript function?

I always appreciate the advice given on here. Thanks in advance

0 投票
1 回答
1299 浏览

php - PHP SQL 查询构建引擎

我正在寻找 PHP 的查询构建引擎(不是ORM!),它将满足下面指定的一些标准。不幸的是,在研究了 Doctrine、Propel、Adodb、Zend_Db 等之后,我找不到任何真正符合配置文件的东西——它们要么太抽象(我不需要 ORM 级别的抽象),要么不支持足够的特性. 我需要的是一个库,它允许我以编程方式构建 SQL 查询——我什至不需要它来运行它,尽管那也可以。

我真的很想避免重新发明轮子,所以如果您知道符合个人资料的内容,请提出来。如果您认为上面提到的其中一个适合(我错过了),请也告诉我。

必须有(如果图书馆没有,它对我没用):

  • 支持 PHP 5.2(不幸的是,命名空间库暂时不能使用)
  • 支持程序化查询生成,包括选择表达式、排序依据、限制、分组依据、拥有、联合、外连接等。
  • 支持Mysql、Oracle oci8、MSSQL、DB2、Postrges
  • 支持构建命名参数化查询和准备好的语句
  • 支持随时动态添加条件/加入
  • 支持日期时间等数据类型 - 例如,正确格式化传入/传出数据,在需要时使用正确的比较函数等(当然还有正确的引用)。我们知道代码中所有字段的类型,因此库应该允许我们告诉它每个字段是什么。
  • 独立(易于使用,无需大量其他支持类)
  • 易于扩展且许可允许以类似 BSD 的条款进行扩展
  • 干净的 PHP 5 代码(没有 PHP 4 object-by-ref cruft 等)

很高兴(我们可以在“必须拥有”的基础上实现它,但如果它已经完成会更快乐)

  • 支持实例化参数化查询(全部和部分) - 即在构建查询支持后为其提供部分参数并生成替换这些参数的新查询
  • 支持合并两个查询(即将一个查询中的条件和表添加到另一个查询中)
  • 支持查询注释(包括参数化它们)

奖金(这真的会让我们开心,但我们现在可以没有它)

  • 支持序列化
  • 支持缓存

那么,有人知道这样的图书馆吗?