问题标签 [dbix-class]
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.
mysql - 如何在 Perl 中干净地提取 MySQL 枚举值?
我有一些代码需要在插入数据库之前确保一些数据在 mysql 枚举中。我发现这样做的最干净的方法是以下代码:
我们正在使用DBIx::Class。当然有更好的方法来实现这一点吗?(请注意,$table 变量来自我们的代码,而不是来自任何外部来源。因此,没有安全问题)。
perl - 如何使用外部数据过滤 DBIX::Class 结果集?
使用DBIx::Class并且我有一个结果集,需要通过 SQL 无法生成的数据进行过滤。我需要做的是有效地等同于这个假设的例子:
通读文档让我不知道如何完成这样的策略。
perl - 如何将 DBD::Proxy 与 DBIx::Class 一起使用?
我需要通过防火墙获得数据库连接,并限制可以运行的查询。DBD::Proxy 似乎是解决这个问题的完美解决方案。但是,我目前正在使用 DBIx::Class,并且不知道如何将它们连接在一起。
特别是 DBD::Proxy 不使用 SQL;它需要特定的命名查询。但是 DBIx::Class 似乎没有办法调用这些命名查询。
这是在基于 Catalyst 的 web 应用程序中。
perl - 如何使用 mod_perl 在 CGI::Application 中拥有持久的 DBIx::Class?
我在带有 DBIx::Class 的 mod_perl 上使用 CGI::Application,我希望在实例化时定义一个新的 dbic 模式。到目前为止,我还无法让它工作。我最接近的是一个超类,它有一个 connect() 方法,它返回一个新对象,但我宁愿它已经被连接和实例化。
我真的很感激任何想法。
谢谢!
注意:好的,显然还没有帮助,但是,与此同时,我创建了一个访问器,它可以懒惰地实例化 DBIx::Class,所以这可能会更好一些。核实:
然后当然要使用它,您可以执行以下操作:
perl - 在使用 Template Toolkit 的 Catalyst 项目中显示 DBIx::Class ResultSet 的正确方法是什么?
给定一个 DBIx::Class 结果集,例如:
我读过的教程使用存储来传递行的arrayref:
这会导致此时执行查询,并将结果对象填充到存储中,因此它们可以在 TemplateToolkit 中用作:
是否有适当的方法让 TT 在从数据库中获取行时对其进行迭代?
sql - 我可以在 DBIx::Class 中漂亮地打印 DBIC_TRACE 输出吗?
将 DBIC_TRACE 环境变量设置为 true:
生成非常有用的输出,特别是显示正在执行的 SQL 查询,但 SQL 查询都在一行上。
有没有办法通过某种“sql tidy”例程来更好地格式化它,也许将它分成多行?如果做不到这一点,谁能给我一个提示,我需要破解代码中的哪个位置来添加这样的钩子?最好的工具是接受格式错误的 SQL 查询并推出格式良好的查询?
在这种情况下,“漂亮的格式”仅仅意味着比“全部在一行上”更好。我对格式查询的特定样式并不特别在意
谢谢!
perl - 如何使用固定连接条件建立 DBIx::Class 关系?
我们有一个可以在一侧处理多种类型的对象的链接表,但我不知道如何使用 has_many 从这些对象之一获取链接表。
示例:链接表包含:
从资源端建立关系很容易:
但是我一直没能从页面端得到对应关系:
会得到 not_page 链接
给出一个“无效的 rel cond val page”错误(这对我来说并不奇怪)。
给出“无效的 rel cond val "page"”错误。扔反斜杠没有帮助。
DBIx::Class::Relationship::Base说:
条件必须是表之间连接的SQL::Abstract样式表示
我从那里尝试了各种不同的选择,例如:
但根本没有任何成功。
如果我将另一个字段添加到始终包含值“页面”的页表中,我可以这样做
但这几乎不是最佳解决方案。
为每种类型将链接表拆分为单独的一个可能是可能的,但这是一个正在考虑适应 DBIx::Class 的现有项目,可能还有其他地方将一个表拆分为多个其他表更多比它的价值麻烦。
perl - 我可以在 DBIx::Class 中建立“父母有_很多孙子”关系吗?
我想要这样的功能:
我可以通过简单的链式连接在父类之外轻松完成:
但是在父类中,我无权(也不应该)访问模式对象。在我可以访问的父类内部,$self->children
但它返回一个子类的结果集,我必须遍历它们以获取每个子类的grandchildren
.
有什么方法可以定义这种 ActiveRecord 风格吗?
database - 如何在 mod_perl 中建立 DBIC 持久数据库连接?
我正在为我的 Web 应用程序使用 mod_perl。目前,我计划在网络上使用一个mysql数据库。在对 display_customer_transaction.cgi 的每个 CGI 请求中,我的脚本将
- 跨网络打开数据库连接
- 使用 SQL 语句对数据库执行查询
- 分析从数据库中检索到的数据
- 以 HTML 格式打印数据
- 关闭数据库连接
经过一些分析,我意识到步骤(1)是瓶颈。因此,我希望避免为每个 CGI 请求打开和关闭数据库连接。我的愿望是,如果我的第一个 CGI 请求打开了一个数据库连接,我的第二个传入 CGI 请求(来自不同的客户端)可能会重用第一个数据库连接。
我试图用谷歌搜索“DBIX 持久数据库连接”,但几乎找不到相关结果。(编辑:那是因为它被称为 DBIC,或 DBIx::Class,而不是 DBIX。)
我使用Apache::DBI进一步查找相关信息(但是,我的意图是在 DBIX 上,而不是 Apache::DBI)。有一些信息让我感到困惑:
Apache::DBI 模块仍然有一个限制:它在每个进程的基础上保持数据库连接的持久性。
一直以来,我对 Apache 如何服务 CGI 请求的概念是
- Apache 将始终生成一个新进程来服务传入的新 CGI 请求。每当 Perl 解释器执行完 Perl 脚本时,进程就会死掉。
那么,如果 Apache::DBI 模块只能在每个进程的基础上保持数据库连接的持久性,我的第二个 CGI 请求如何重新使用第一个 CGI 请求打开的连接?
但回到我原来的问题。如何在 mod_perl 中建立 DBIX 持久数据库连接?
sql - 从 DBIx::Class 中的多个表中选择
我有以下 DBIx::Class 代码:
下面的 SQL 语句是根据上面的 DBIx::Class 代码生成的:
现在,我希望从 4 个表中获得结果。我手动编写自己的 SQL 代码:
我尝试将上面的 SQL 语句转换为 DBIx::Class,如下所示:
当我尝试在resultset上执行next时,出现异常“Not an ARRAY reference” 。请注意,我不允许在 DBIx::Class中使用join ,作为引用者和附属表,与 *table*** 表没有关系。
如何让 DBIx::Class 代码等效于 SQL 多选表?