标签: dbix-class

Perl DBIx :: Class - 使用new()时的默认值?

当使用在DBIx ::类ResultSource新()方法创建一个(可能是暂时的)变量,它似乎并没有填充在DBIC模式中指定的默认值的属性(这是我们创建从表中指定模式).

目前,我们正在为一个这样的类创建一个默认值(第一种情况,这是一个问题)

sub new {
  my $class = shift;
  my $self = $class->next::method(@_);
  $self->queue('DEFAULT_QUEUE_VAL') unless $self->queue();
  return $self;
}
Run Code Online (Sandbox Code Playgroud)

在该类中(即属性queue => DEFAULT_QUEUE_VAL).然而,长期来看,我们有不同的默认值几个DBIC类,我们想避免复制上述逻辑所有的各类案件.

有没有可用的CPAN模块/插件?我们没有看到任何我们(粗略地粗略地)搜索CPAN.

编辑:修复代码示例中的一些垃圾; 结果我从过时的代码中获取了cp'd.

perl dbix-class

5
推荐指数
1
解决办法
904
查看次数

我怎样才能打印DBIx :: Class结果?

我想像这样漂亮地打印DBIx :: Class :: ResultSet结果:

my $schema = MyDatabase::Main->connect('dbi:SQLite:db/example.db');
my $rs = $schema->resultset('Track')->all()
# then print $rs with all of those feilds
Run Code Online (Sandbox Code Playgroud)

我找到了DBIx :: SQLCrosstab :: Format类,但它似乎只适用于自己的查询.

perl dbix-class

5
推荐指数
1
解决办法
1618
查看次数

DBIx :: Class :: ResultSet问题

我有以下代码:

package MyPackage::ResultSet::Case;
use base 'DBIx::Class::ResultSet';

sub cases_last_fourteen_days {
    my ($self, $username) = @_; 

    return $self->search({
                username    => $username,
                date        => { '>=' => 'DATE_SUB(CURDATE(),INTERVAL 14 DAY)' },
    }); 
};
Run Code Online (Sandbox Code Playgroud)

但是当我尝试以这种方式使用它时:

$schema->resultset('Case')->cases_last_fourteen_days($username)
Run Code Online (Sandbox Code Playgroud)

我总是得到零结果,谁能说出我做错了什么?

谢谢!

perl dbix-class

5
推荐指数
1
解决办法
1165
查看次数

DBIx :: Class :: ResultSet在多个唯一约束上更新或创建

我想知道dbix中的多个唯一约束是否可能update_or_create

来自Cpan:

 my $cd = $schema->resultset('CD')->update_or_create(
    {
      artist => 'Massive Attack',
      title  => 'Mezzanine',
      year   => 1998,
    },
    { key => 'cd_artist_title' }
  );
Run Code Online (Sandbox Code Playgroud)

我想做什么

   my $cd = $schema->resultset('CD')->update_or_create(
    {
      artist => 'Massive Attack',
      title  => 'Mezzanine',
      year   => 1998,
    },
    { key => {'cd_artist_title','year' }
  );
Run Code Online (Sandbox Code Playgroud)

perl catalyst dbix-class

5
推荐指数
1
解决办法
1526
查看次数

我应该使用哪个Perl模块来生成验证CRUD网络表单?

有没有人成功使用类似DBIx :: Class :: WebFormCatalystX-CRUD的东西从数据库表自动构建自我验证的webform?

我正在想象一个模块,它读取数据库表模式,读取每列的约束,生成一些webform的抽象表示,带有错误消息的字段等.我正在使用Catalyst和Plack,它有一个很大的现有代码库.

我不想编写HTML webform,也不想编写任何验证逻辑.我的目标是以Ruby on Rails的风格编写尽可能少的代码.哪个Perl模块最适合这个?

更新:我已经用HTML :: FormFu解决了webform方面的问题,但它仍然很笨重地将表单输入映射到数据库,例如date_start和date_end都与'created'列相关,并且注释应该使用'LIKE%foo%匹配'等等'DBICFu'在哪里?

更新:这是一个Web应用程序,webform看起来不应该像数据库表.我不是在寻找数据库管理工具.

perl webforms crud catalyst dbix-class

5
推荐指数
1
解决办法
646
查看次数

Catalyst&Perl - 在运行时生成模型

我正在开发一个将在运行时生成数据库表的应用程序.我正在使用Catalyst和DBIC,我需要在生成新表时生成新的ResultSet.这个新的ResultSet必须作为Catalyst模型添加,所以我可以,$c->model('DB::NewFoo')但我需要在运行时发生这种情况.

表生成和ResultSet生成不是问题,我需要的是在运行时将那些新生成的ResultSet添加到Model中,以便我可以在进一步的请求中调用它们.

到目前为止,我的想法是创建一个控制DBI::Class::Schema,提供访问器方法的类,并提供一种在运行时更新和重新加载Schema的方法.我想要一个使用Catalyst本身的不同想法.

感谢您提供的所有帮助.

perl catalyst dbix-class

5
推荐指数
1
解决办法
136
查看次数

如何将dbicdump用于onyl dump特定表

我只是需要从我的数据库,使得这些转储特定表特定的表(表3是准确了200桌)现在将执行DBIx::Class::Schema.

以下是docs(https://metacpan.org/pod/dbicdump)中的命令:

dbicdump -o dump_directory=./lib   -o components='["InflateColumn::DateTime"]'   -o preserve_case=1   MyApp::Schema dbi:mysql:database=database_name user pass;
Run Code Online (Sandbox Code Playgroud)

我尝试在database_name之后附加表名但没有运气,它仍然会转储指定数据库中的所有表.需要帮忙.我在文档中找不到任何内容.

还有一个主题问题:

这意味着什么?-o components='["InflateColumn::DateTime"]' -o preserve_case=1我也无法在文档中找到他们的解释.

谢谢

mysql perl dbix-class

5
推荐指数
1
解决办法
458
查看次数

如何在DBIx :: Class中定义和使用many_to_many关系?

我在数据库中有3个表,简化为:

book        book_language       language
=====  <->> ============== <<-> ========
bookID      book_languageID     languageID
title       bookID              language
            languageID
Run Code Online (Sandbox Code Playgroud)

使用DBIx::Class::Schema::Loader我生成的架构,对应的Result类在哪里:

Book
BookLanguage
Language
Run Code Online (Sandbox Code Playgroud)

由于某些原因Loader,未在这些表之间检测到many_to_many关系,因此我在此类中定义了自己的关系Language

package R::RMT::Result::Language;
...
__PACKAGE__->many_to_many('books' => 'book_language_rel', 'bookid_rel');
Run Code Online (Sandbox Code Playgroud)

Book课堂上:

package R::RMT::Result::Book;
...
__PACKAGE__->many_to_many('languages' => 'book_language_rel', 'languageid_rel');
Run Code Online (Sandbox Code Playgroud)

现在,我希望以此访问所有相关语言:

my $dsn = "DBI:mysql:database=rkBook";
my $schema = R::RMT->connect( $dsn, 'user', 'pwd' );

my $book_rs = $schema->resultset('Book');
say $book_rs->languages();
Run Code Online (Sandbox Code Playgroud)

但是我得到了错误:

Can't locate object method "languages" via package "DBIx::Class::ResultSet" at ...
Run Code Online (Sandbox Code Playgroud)

我错了吗?我尝试将文档中的线索拼凑在一起,但显然我弄错了。我从未见过一个完整的many_to_many关系如何运作的例子。

AFAIU,在Result类中定义关系应成为该类的访问者。我如何看到所有派生的访问者?如果我尝试转储ResultSet对象,则Data::Printer只能看到列的访问器,而没有关系的访问器。 …

perl orm dbix-class

5
推荐指数
1
解决办法
358
查看次数

DBIx :: Class - 使用prefetch获取用作条件的所有关系?

这里有三个表:product,modelproduct_modelN:M关系中的产品和模型.

product          product_model            model

id name          product_id model_id      id name
------------     -------------------      ----------
p1 Product 1     p1         m1            m1 Model 1
p2 Product 2     p2         m1            m2 Model 2
...              p2         m2
Run Code Online (Sandbox Code Playgroud)

我想做什么:找到所有支持Model 2的产品(例如product 2).然后,对于每个产品,显示产品支持的model_ids列表(product 2=> [ m1,m2])

这是我的第一次尝试.我需要N个查询来搜索model_id每个产品.

# 1 query for searching products
my @products = $schema->resultset('Product')->search(
   { 'product_models.model_id' => 'm2' },
   { 'join' => 'product_model' },
)
# N queries for searching …
Run Code Online (Sandbox Code Playgroud)

perl join prefetch dbix-class

5
推荐指数
1
解决办法
431
查看次数

如何使用DBIx :: Class进行子选择?

我从DBIx :: Class开始,我有一个想要在DBIx :: Class中的子选择,但我感到困惑,无法构建代码.

我的MySQL选择是这个:

Select name from tblCategory where id = (
    Select id from tblCategory where id = (
         Select id from tblRadio where name = "RFM"
    )
);
Run Code Online (Sandbox Code Playgroud)

我读到DBIx :: Class不支持subselect; 真的吗?如果是这样,你在这样的情况下做了什么?

perl perl-module dbix-class

4
推荐指数
1
解决办法
3130
查看次数

标签 统计

dbix-class ×10

perl ×10

catalyst ×3

crud ×1

join ×1

mysql ×1

orm ×1

perl-module ×1

prefetch ×1

webforms ×1