标签: dbix-class

DBIx :: Class中的右侧MySQL函数

在DBIx :: Class中,当我使用以下语法生成查询时:

...
'Time(submitted_at)' => { '>' => 'Time(Now()-Interval ' . $wait_period . ' minute)' }
...
Run Code Online (Sandbox Code Playgroud)

除了右侧的函数在引号中之外,生成的查询是完美的.

... AND ( Time(submitted_at) > 'Time(Now()-Interval 5 minute)' ) ...
Run Code Online (Sandbox Code Playgroud)

如果没有引用那么它就是正确的.我该怎么办?

谢谢,罗布

mysql perl dbix-class

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

使用dbix-class加入子查询?

给出两个表:(表示关键问题的传入大大减少/简化的示例)

app_data表示可以订阅的应用程序

id   app_name
 1   apple
 2   berry
 3   cherry
Run Code Online (Sandbox Code Playgroud)

app_sub将电子邮件地址映射到应用程序

id   email
 1   alex
 2   bob
 2   coby
Run Code Online (Sandbox Code Playgroud)

我想从单用户的角度生成一个表,显示当前用户订阅的应用程序,而不是.

例如,从Alex的角度来看,我想得到:

desired_table

id    app_name    is_subscribed
 1    apple       true
 2    berry       false
 3    cherry      false
Run Code Online (Sandbox Code Playgroud)

以下纯SQL查询似乎没问题:

select id, app_name, email
  from app_data left join ( select *
                              from app_sub
                             where email='alex'
                          ) as subquery
                          on app_name.id=app_data.id;
Run Code Online (Sandbox Code Playgroud)

但是我很难在dbix-class中工作.

或者,我试图消除子查询,如下所示:

$app_data_resultset->search( { -or => [ { email => 'alex' },
                                        { email => undef },
                                      ],
                             },
                             { select => [ …
Run Code Online (Sandbox Code Playgroud)

sql perl subquery dbix-class

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

perl DBIx::Class 对表上的所有搜索都有一个默认过滤器

我有一堆由dbicdump / DBIx::Class::Schema::Loader从我的数据库模式创建的 DBIx::Class Result 类

我需要向is_deleted其中一个表添加一个布尔列,并过滤掉所有现有搜索和联接中已删除的记录。

不幸的是,在庞大的 perl 应用程序中有 30 或 40 个直接使用相关表的地方,并且至少有相同数量的通过prefetchjoin属性加入它的地方search()。手动更改它们是可能的,但非常耗时。

有没有办法向来自或来自特定表的WHERE所有查询添加默认子句?SELECTJOIN

我正在通过某种方式能够调用resultset('MyTable')->search({},{})WHERE is_deleted = 0添加到所有查询中。加上is_deleted = 0使用时应用相同的过滤器prefetch => [qw(my_table)],

perl dbix-class

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

按日期在DBIx :: Class上搜索

我在SQLite数据库中有一个表,其中一列以epoch秒存储文件mtimes.

我现在想搜索在某个月内修改过的表格文件?

在原始SQL中我会这样做:

 select * from my_table where strftime('%Y-%m', mtime, "unixepoch") = "2009-08"
Run Code Online (Sandbox Code Playgroud)

有没有办法通过DBIx :: Class有效地做到这一点?有可能吗?

 $m->search({ \'strftime('%Y-%m', mtime, "unixepoch")' => "2009-08" })
Run Code Online (Sandbox Code Playgroud)

我试过了解DBIx :: Class :: InflateColumn :: DateTime是否有办法,但我没有找到它.

谢谢

西蒙娜

perl dbix-class

0
推荐指数
1
解决办法
1143
查看次数

dbix :: class为非催化剂应用程序生成模式

我最近一直在构建Catalyst应用程序,我喜欢使用Catalyst的创建脚本来轻松生成DBIx :: Class的表模式.我希望能够使用DBIX :: Class而无需手动为我的表编写模式.有没有办法这样做而不用手工做?谢谢!

perl schema catalyst dbix-class

0
推荐指数
1
解决办法
404
查看次数

如何在Catalyst上使用DBIx助手?

我想用一个DBIx ResultSet的帮手,也就是DBIx::Class::Helper::ResultSet::Random,在我催化剂的应用.

包文档显示了它是如何从DBIx::Class::ResultSet类中加载的,但据我所知,我没有这些,因为我正在使用它DBIx::Class::Schema::Loader来创建模式.

我试过把它__PACKAGE__->load_components('Helper::ResultSet::Random')放在我的Schema::Result,但是没有用:无法通过包"DBIx :: Class :: ResultSet"找到对象方法"rand".

应该怎么做?

perl catalyst dbix-class

0
推荐指数
1
解决办法
149
查看次数

使用DBIx :: Class而不加载所有表

他们在评论中,DBIx::Class可以在不加载所有表格的情况下使用.

如何在DBIx::Class不加载所有表的情况下使用?(出于性能原因,我需要这个.)

perl dbix-class perl5

0
推荐指数
1
解决办法
52
查看次数

标签 统计

dbix-class ×7

perl ×7

catalyst ×2

mysql ×1

perl5 ×1

schema ×1

sql ×1

subquery ×1