问题标签 [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.
perl - 如何在附加的 sqlite 数据库中创建外键?
我正在尝试创建一个 sqlite3 数据库作为模拟生产环境的测试环境。由于生产的设置方式,这些表位于多个模式中。
我已经在 DBIx::Class 中设置了类,$schema->storage->dbh_do
用于将数据库与模式连接起来,并$schema-deploy()
用于创建数据库。
但是,在第二个表上创建外键时,出现以下错误:
去掉DBIx::Class
最简单的测试重现如下。
从外键子句中删除模式将成功创建表。
如何使用 DBIx::Class 在外部模式中创建表?
编辑:代码的完整示例。
主脚本:
给出的错误是:
perl - 使用 DBIx::Class 时如何指定索引长度?
我正在使用 DBIx::Class 并使用 sqlt_deploy_hook 来:
我要索引的某些列是文本类型,或者是 varchars > 255 长度。MySQL 不喜欢文本索引,除非您指定它们的长度,如下所示:
但是查看 SQL::Translator::Schema::Table (具有 add_index 方法)和索引,我看不到指定长度的方法。
生成此 SQL:
和这个:
生成此 SQL:
这不起作用,因为没有具有该名称的列。
到目前为止,我已经通过简单地不索引我的文本列来解决这个问题。但是,我现在正在尝试使用 DBIx::Class::DeploymentHandler,它在我“安装”时将我的长 varchars 转换为文本列,我真的需要索引这些 varchar 列。
我能做些什么?
perl - DBIx::Class - 添加对“立即更新”的支持的最佳方式
我想添加对“FOR UPDATE NOWAIT”的支持来选择带有->select(..., { for => 'update_nowait' })
(对于 Oracle)的语句。
我正在使用DBIx::Class 0.08127
我可以修改 DBIx/Class/SQLMaker/Oracle.pm,但我想知道是否有另一种(首选)方式,特别是如果它不涉及修改分发文件。
database - DBIx::Class 中的设置操作
使用 DBIx::Class 执行集合操作的最佳方式是什么?我看到一种解决方案是根据我的查询创建一个结果源,但我的条件将由用户定义,我不知道最佳答案是否是动态创建结果源。
基本上我需要将这种类型的查询转换为 DBIC where code
,attr_name
并且value
由用户定义:
perl - 使用 DBIx::Class 中的 ID 列表进行搜索
我有一个包含用户选择的 ID 的列表。使用 DBIx::Class 中的 ID 列表搜索所有行的最佳方法是什么?
perl - 如何处理 Perl 方法链中的错误?
处理 Perl 方法链中抛出的异常的最佳方法是什么?如果任何链接的方法抛出异常,我想分配一个值 0 或 undef
代码示例:
最好的方法是什么?我是否必须每次都包含在 try/catch/finally 语句中?我想应用的上下文是:我在使用 Catalyst 和 DBIC 进行 Web 开发工作,我做了很多链接的结果集,如果其中一些结果集抛出异常,我只想分配一个 0 或 undef 的值,然后处理这个模板中的错误(我正在使用模板工具包)。如果有另一种方法可以做到这一点,而无需将每个调用都包含在 try/catch 中,请告诉我。如果您知道在相同上下文(Catalyst/DBIC/TT)中处理此类错误的更好方法,请提出建议。一个实际的例子是当用户搜索某些东西并且它不存在时。
perl - 在 DBIx::Class 中使用关系进行搜索
我开始学习 DBIx::Class 并且对在相关表中进行搜索有疑问:
考虑以下代码:
我想要的是只搜索作者在$author
.
这两个搜索返回相同的结果集?
如果是,最好的方法是什么,为什么?
如果不是,有什么区别?
sql - 如何在 DBIx::Class 结果集搜索中检索每个组中的最新记录?
我在DBIx::Class结果集搜索中使用group_by 。为每个组返回的结果始终是组中具有最低 id 的行(即组中最旧的行)。我正在寻找一种方法来获取具有最高 id 的行(即组中的最新行)。
问题与此基本相同: 检索每个组中的最后一条记录 ...除了我使用的是 DBIx::Class 而不是原始 SQL。
把这个问题放在上下文中:
我有一张音乐评论表
任何给定的艺术家 ID/专辑 ID 都可以有多个评论。我想要最新的评论,按日期降序排列,每个艺术家 ID/专辑 ID 不超过一条评论。
我尝试使用以下方法执行此操作:
这几乎可行,但会返回每个组中最旧的评论而不是最新的评论。我怎样才能获得最新的?
perl - DBIx::Class 可以与存储过程而不是表一起使用吗?
通过返回结果集而不是表或视图的 mssql 存储过程向我提供了从数据库读取的访问权限。但我希望能够使用 ORM 读取数据。
我尝试DBIx::Class::ResultSource::View
将过程调用(例如EXEC my_stored_proc ?
)用作自定义查询,但这不起作用,因为它试图将过程调用转换为选择语句。
有人有其他建议吗?