问题标签 [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.

0 投票
1 回答
1673 浏览

perl - 如何在附加的 sqlite 数据库中创建外键?

我正在尝试创建一个 sqlite3 数据库作为模拟生产环境的测试环境。由于生产的设置方式,这些表位于多个模式中。

我已经在 DBIx::Class 中设置了类,$schema->storage->dbh_do用于将数据库与模式连接起来,并$schema-deploy()用于创建数据库。

但是,在第二个表上创建外键时,出现以下错误:

去掉DBIx::Class最简单的测试重现如下。

从外键子句中删除模式将成功创建表。

如何使用 DBIx::Class 在外部模式中创建表?

编辑:代码的完整示例。

主脚本:

给出的错误是:

0 投票
1 回答
259 浏览

perl - 使用 DBIx::Class 时如何指定索引长度?

我正在使用 DBIx::Class 并使用 sqlt_deploy_hook 来:

我要索引的某些列是文本类型,或者是 varchars > 255 长度。MySQL 不喜欢文本索引,除非您指定它们的长度,如下所示:

但是查看 SQL::Translator::Schema::Table (具有 add_index 方法)和索引,我看不到指定长度的方法。

生成此 SQL:

和这个:

生成此 SQL:

这不起作用,因为没有具有该名称的列。

到目前为止,我已经通过简单地不索引我的文本列来解决这个问题。但是,我现在正在尝试使用 DBIx::Class::DeploymentHandler,它在我“安装”时将我的长 varchars 转换为文本列,我真的需要索引这些 varchar 列。

我能做些什么?

0 投票
1 回答
261 浏览

perl - DBIx::Class - 添加对“立即更新”的支持的最佳方式

我想添加对“FOR UPDATE NOWAIT”的支持来选择带有->select(..., { for => 'update_nowait' })(对于 Oracle)的语句。

我正在使用DBIx::Class 0.08127

我可以修改 DBIx/Class/SQLMaker/Oracle.pm,但我想知道是否有另一种(首选)方式,特别是如果它不涉及修改分发文件。

0 投票
1 回答
208 浏览

perl - 在 DBIx::Class 中使用 base 而不是 parent

知道为什么 DBIx::Class 使用use base而不是use parent

例如看到这个

纠正我我错了,但它不是use base已弃用吗?

谢谢,

0 投票
1 回答
242 浏览

database - DBIx::Class 中的设置操作

使用 DBIx::Class 执行集合操作的最佳方式是什么?我看到一种解决方案是根据我的查询创建一个结果源,但我的条件将由用户定义,我不知道最佳答案是否是动态创建结果源。

基本上我需要将这种类型的查询转换为 DBIC where codeattr_name并且value由用户定义:

0 投票
1 回答
851 浏览

perl - 使用 DBIx::Class 中的 ID 列表进行搜索

我有一个包含用户选择的 ID 的列表。使用 DBIx::Class 中的 ID 列表搜索所有行的最佳方法是什么?

0 投票
3 回答
869 浏览

perl - 如何处理 Perl 方法链中的错误?

处理 Perl 方法链中抛出的异常的最佳方法是什么?如果任何链接的方法抛出异常,我想分配一个值 0 或 undef

代码示例:

最好的方法是什么?我是否必须每次都包含在 try/catch/finally 语句中?我想应用的上下文是:我在使用 Catalyst 和 DBIC 进行 Web 开发工作,我做了很多链接的结果集,如果其中一些结果集抛出异常,我只想分配一个 0 或 undef 的值,然后处理这个模板中的错误(我正在使用模板工具包)。如果有另一种方法可以做到这一点,而无需将每个调用都包含在 try/catch 中,请告诉我。如果您知道在相同上下文(Catalyst/DBIC/TT)中处理此类错误的更好方法,请提出建议。一个实际的例子是当用户搜索某些东西并且它不存在时。

0 投票
1 回答
1182 浏览

perl - 在 DBIx::Class 中使用关系进行搜索

我开始学习 DBIx::Class 并且对在相关表中进行搜索有疑问:

考虑以下代码:

我想要的是只搜索作者在$author.
这两个搜索返回相同的结果集?
如果是,最好的方法是什么,为什么?
如果不是,有什么区别?

0 投票
1 回答
1198 浏览

sql - 如何在 DBIx::Class 结果集搜索中检索每个组中的最新记录?

我在DBIx::Class结果集搜索中使用group_by 。为每个组返回的结果始终是组中具有最低 id 的行(即组中最旧的行)。我正在寻找一种方法来获取具有最高 id 的行(即组中的最新行)。

问题与此基本相同: 检索每个组中的最后一条记录 ...除了我使用的是 DBIx::Class 而不是原始 SQL。

把这个问题放在上下文中:

我有一张音乐评论表

任何给定的艺术家 ID/专辑 ID 都可以有多个评论。我想要最新的评论,按日期降序排列,每个艺术家 ID/专辑 ID 不超过一条评论。

我尝试使用以下方法执行此操作:

这几乎可行,但会返回每个组中最旧的评论而不是最新的评论。我怎样才能获得最新的?

0 投票
2 回答
1058 浏览

perl - DBIx::Class 可以与存储过程而不是表一起使用吗?

通过返回结果集而不是表或视图的 mssql 存储过程向我提供了从数据库读取的访问权限。但我希望能够使用 ORM 读取数据。

我尝试DBIx::Class::ResultSource::View将过程调用(例如EXEC my_stored_proc ?)用作自定义查询,但这不起作用,因为它试图将过程调用转换为选择语句。

有人有其他建议吗?