baergaj // pullingshots // andrew@pullingshots.ca
DBIx in IC5
Andrew Baerg // Perl Dancer 2015
My::Schema::Result::Userdb
__PACKAGE__->has_many(
transactions => 'My::Schema::Result::Transaction', 'username'
);
My::Schema::Result::Transaction
__PACKAGE__->belongs_to(
customer => 'My::Schema::Result::Userdb', 'username',
{ 'is_foreign_key_constraint' => 0, },
);
My::Schema::ResultSet::Transaction;
sub complete {
my ($self) = @_;
return $self->search(
{
'me.status' => { '-in' => ['shipped','imported','complete'] },
'me.deleted' => { '!=' => 1 },
}, {},
);
}
Sub <<EOG
sub get_schema{
# get the database handle
my $db;
$db = $Db{parts} or do {
$Tag->perl({ table => 'parts'});
$db = $Db{parts} or die "Table parts is not available";
};
my $dbh = $db->dbh()
or die "not a DBI table";
return My::Schema->connect( sub { $dbh }, '');
}
EOG
catalog.cfg
UserTag foreach Alias loop
diff --git a/lib/Vend/Interpolate.pm b/lib/Vend/Interpolate.pm
index c02f6f1..0b59a9f 100644
--- a/lib/Vend/Interpolate.pm
+++ b/lib/Vend/Interpolate.pm
@@ -4793,10 +4793,22 @@ sub tag_loop_list {
## about passing embedded Perl objects to a list
# Can pass object.mv_results=$ary object.mv_field_names=$ary
+ if ($opt->{arrayref}) {
+ $opt->{object}->{mv_results} = $opt->{arrayref};
+ }
if ($opt->{object}) {
my $obj = $opt->{object};
# ensure that number of matches is always set
# so [on-match] / [no-match] works
+ if (ref($obj->{mv_results}) ne 'ARRAY') {
+ logError("loop was not passed an arrayref in object.mv_results=`...` argument. Got " . $obj->{m
+ return;
+ }
+ return unless scalar @{$obj->{mv_results}} > 0;
+ if (ref($obj->{mv_results}->[0]) ne 'HASH') {
+ logError("loop was not passed an arrayref of hashrefs in object.mv_results=`...` argument. Got
+ return;
+ }
$obj->{matches} = scalar(@{$obj->{mv_results}});
return region($opt, $text);
}
UserTag/ActionMap:
$Scratch->{orders} = [
$Sub->get_schema()
->resultset('Userdb')
->find('ABT3K')
->transactions
->complete
->hri
];
OR
$Scratch->{orders} = My::Orders->new(
schema => $Sub->get_schema(),
customer => 'ABT3K',
pending => 1,
)->list;
Page:
<ul>
[foreach arrayref=`$Scratch->{orders}` prefix="order"]
<li>[order-param order_number]: [order-param order_date]</li>
[/foreach]
</ul>
in UserTag:
my $customer = $Sub->get_schema()
->resultset('Userdb')
->find('ABT3K');
if ($customer) {
$Scratch->{orders} = [
$customer->transactions
->complete
->hri
];
}
in Schema::Result::
__PACKAGE__->has_many(
customers => 'Edge::Company::Schema::Result::Userdb',
{ 'foreign.email' => 'self.email' },
{ cascade_copy => 0, cascade_delete => 0 },
);
baergaj // pullingshots // andrew@pullingshots.ca
Thank you!
Andrew Baerg // Perl Dancer 2015
DBIx in IC5
By baergaj
DBIx in IC5
Perl Dancer 2015
- 1,157