Perhaps a simpler example will help.
You can set __PACKAGE__->result_source_instance->name to any, arbitrary SQL your DB backend understands. You need to pass it as a scalar reference and the enclosing parens are important.
Running the following code with DBIC_TRACE=1 to display the generated SQL shows:
SELECT me.number FROM (select 10*10 as number) me: 100
#!/usr/bin/perl
use strict;
use warnings;
package MySchema::ArbitrarySQL;
use base qw/DBIx::Class::Core/;
__PACKAGE__->table('dummy');
__PACKAGE__->add_columns(qw/number/);
__PACKAGE__->result_source_instance->name(\'(select 10*10 as number)');
package MySchema;
use base qw/DBIx::Class::Schema/;
__PACKAGE__->register_class(ArbitrarySQL => 'MySchema::ArbitrarySQL');
package main;
my $schema = MySchema->connect(
'dbi:SQLite:dbname=myschema.db', undef, undef,
);
my ($r) = $schema->resultset('ArbitrarySQL')->all;
print $r->number, "\n";
In reply to Re: [DBIX::Class] problem with Arbitrary SQL through a custom ResultSource
by semifor
in thread [DBIX::Class] problem with Arbitrary SQL through a custom ResultSource
by dreel
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |