标签: rose-db-object

Perl模块"没有返回真正的价值"

我在CPAN上遵循Rose :: DB :: Object教程并设置了三个包.

package My::DB::Object;
use My::DB;
use base qw(Rose::DB::Object);
sub init_db { My::DB->new }

package My::DB;
use base qw(Rose::DB);
...

package Motorcycle;
use base 'My::DB::Object';

__PACKAGE__->meta->setup
(
  ...
);

__PACKAGE__->meta->make_manager_class('motorcycles');
Run Code Online (Sandbox Code Playgroud)

在申请中:

package main;

use Motorcycle;
use Mojolicious::Lite;
Run Code Online (Sandbox Code Playgroud)

无法使用此错误进行编译:

My/DB/Object did not return a true value <eval 2> line 2…
Run Code Online (Sandbox Code Playgroud)

问候和感谢.

perl rose-db-object

6
推荐指数
2
解决办法
2万
查看次数

使用 Rose::DB::Object 和 MySQL 设置 NULL 日期时间

我在这里可能是错的,但看起来这里的标准是相互冲突的。

MySQL 将存储的日期时间“0000-00-00 00:00:00”视为等同于 NULL。(更新 - 似乎仅当日期时间定义为 NOT NULL 时)

但是 Rose::DB::Object 对 MySQL DATETIME 字段使用 DateTime,并且尝试从“0000-00-00”设置空 DATETIME 会在 DateTime 模块中引发异常。即,我无法创建年 0 月 0 日的 DateTime 对象,因为这会在 DateTime 模块中引发异常。

我签入了 Rose::DB::Object::Metadata::Column::Datetime,但在创建条目或检索时看不到显式处理 NULL DateTime 的方法。

我错过了什么吗?

即,Rose::DB::Object 可以处理 NULL datetime (MySQL) 字段,即使 DateTime(Perl 模块)不能。

示例代码:

#!/usr/bin/perl
use strict;
use warnings;
use lib 'lib';
use RoseDB::dt_test;

my $dt_entry =  RoseDB::dt_test->new();
$dt_entry->date_time_field('0000-00-00');
$dt_entry->save;



1;

__END__
# definition of table as stored in DB

mysql> show create table dt_test \G
*************************** 1. row *************************** …
Run Code Online (Sandbox Code Playgroud)

mysql perl rose-db-object

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

如何使用RDBO强制模板工具包中的列表上下文?

我有一个TT插件,可以完成琐碎的独特ID:

sub get_unique_uid_tt {
  my ( $classname, $o ) = @_;

  my %h;

  foreach my $item ( @{$o} ) {
    unless ( exists $h{ $item->id } ) {
      $h{ $item->id } = 1;
    }
  }

  return keys %h;
}
Run Code Online (Sandbox Code Playgroud)

模板调用只是:

[% Namespace.get_unique_uid_tt( data.users ) %]
Run Code Online (Sandbox Code Playgroud)

"data"是一个RDB对象,用户是其关系之一.我已经验证".users"直接在Perl中返回一个列表,无论该关系是否有一个或多个元素.

但是,TT似乎返回单元素列表的元素,同时正确返回多个元素的列表.

我查了一下,发现你可以用".list"强制列表上下文:

[% Namespace.get_unique_uid_tt( data.users.list ) %]
Run Code Online (Sandbox Code Playgroud)

对于单元素列表,这不起作用,因为Data :: Dumper显示:

$VAR1 = [
      {
        'value' => 1,
        'key' => '__xrdbopriv_in_db'
      },
      {
        'value' => bless(
         ... snip ...
         ),
        'key' => 'db'
      },
      { …
Run Code Online (Sandbox Code Playgroud)

perl template-toolkit rose-db-object

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

标签 统计

perl ×3

rose-db-object ×3

mysql ×1

template-toolkit ×1