Am 2012-05-08 17:46, schrieb Kenneth S Mclane:
In checking through docs on line I find that prefetch is a better way to go so
I have changed ny sub thusly:
sub list :Local {
my ($self, $c, $page) = @_;
$page = $c->req->param('page') || 1;
my $rs = $c->model('ORANGES::Account')->search({}, {
prefetch => 'progress',
prefetch => 'compliance',
prefetch => 'department_id',
prefetch => 'metrics',
order_by => 'account_code',
rows => 15,
page => $page,
});
$c->stash(accounts => $rs);
$c->stash(pager => $rs->pager());
$c->stash->{'template'}=>'accountview/list';
}
{} is a hashref in Perl. You're defining four values for the key 'prefetch',
the last one overwrites the three previous ones.
As already noted you need to specify the prefetch value as arrayref in your
case:
prefetch => [qw( progress compliance department_id metrics )],
FYI: qw() does nothing but saving you to quote every element of the list. It's
equal to
prefetch => ['progress', 'compliance', 'department_id', 'metrics'],
Note that this is all basic Perl and nothing specific of Catalyst or
DBIx::Class.
From: Frank Schwach <[email protected]><mailto:[email protected]>
To: [email protected]<mailto:[email protected]>
Date: 05/08/2012 10:36 AM
Subject: Re: [Catalyst] Getting hashref instead of value
________________________________
not sure if this is a problem but you should also collapse your joins,
selects and as' into ArrayRefs, as in
join => [ qw( progress compliance department_id ...)]
actually the last one looks suspicious. the relationships should be
called something like "departments", not department_ids. If you have the
same naming for accounts then an account_id is the name (presumably) of
a field in accounts and also a relationship
Frank
On 08/05/12 16:25, Steve wrote:
> The 'account.account_id' referenced in your template I believe is being
> interpreted as an object. Try 'account.account_id.id' instead. I am
> presuming that your DBIC relationship is called 'account_id', and that
> is what you are referencing currently in your template.
>
> On 5/8/2012 11:13 AM, Kenneth S Mclane wrote:
>> I am having a problem with my code and I cannot figure out why it is
>> doing what it is doing. I have this sub:
>>
>> sub list :Local {
>> my ($self, $c, $page) = @_;
>> $page = $c->req->param('page') || 1;
>> my $rs = $c->model('ORANGES::Account')->search({}, {
>> join => 'progress',
>> '+select' => ['progress.percent_complete'],
>> '+as' => ['progress.percent_complete'],
>> join => 'compliance',
>> '+select' => ['compliance.percent_compliant'],
>> '+as' => ['compliance.percent_compliant'],
>> join => 'department_id',
>> '+select' => ['department_id.department_id'],
>> '+as' => ['department_id.department_id'],
>> join => 'metrics',
>> '+select' => ['metrics.num_servers','metrics.num_subsystems'],
>> '+as' => ['metrics.num_servers','metrics.num_subsystems'],
>> order_by => 'account_code',
>> rows => 15,
>> page => $page,
>> });
>> $c->stash(accounts => $rs);
>> $c->stash(pager => $rs->pager());
>> $c->stash->{'template'}=>'accountview/list';
>>
>> }
>> Which I have tried in several different ways to fix this problem, but
>> none have worked so far. In my template file all my fields come up
>> with the valyes expected, except, I am trying to use the account_id
>> field value as part of a uri to take the user to a details page for
>> the row. Where I am expecting a uri such as
>> 'http://127.0.0.1:3000/accountdetails/detail/170'
>> I instead get a uri like this:
>>
>> http://127.0.0.1:3000/accountdetails/detail/dbms::Model::ORANGES::Account=HASH%280x5496460%29
>>
>>
>> This used to work when I was using a view as the basis for my list page.
>>
>> When I run the page I can see in the sub-queries that it runs that it
>> has the "account_id" value as it uses it, but when I try to access it
>> in my template I get the hash ref. None of the other fields do this.
>>
>> one of the sub queries using the account_id value:
>> SELECT me.account_id, me.account_code, me.percent_compliant FROM
>> HCDB_TEST.COMPLIANCE me WHERE ( me.account_id = ? ): '321'
>>
>>
>> My template that cretaes the uri:
>>
>> <td><a href="[% c.uri_for('/accountdetails/detail/') %][%
>> account.account_id %]">[% account.account_code %]</a></td>
>>
>> If someone could point me in the right direction, Ive been fighting
>> this for days.
>>
>>
>>
>> _______________________________________________
>> List: [email protected]<mailto:[email protected]>
>> Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
>> Searchable archive:
>> http://www.mail-archive.com/[email protected]/
>> Dev site: http://dev.catalyst.perl.org/
>
> _______________________________________________
> List: [email protected]<mailto:[email protected]>
> Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
> Searchable archive: http://www.mail-archive.com/[email protected]/
> Dev site: http://dev.catalyst.perl.org/
--
The Wellcome Trust Sanger Institute is operated by Genome Research
Limited, a charity registered in England with number 1021457 and a
company registered in England with number 2742969, whose registered
office is 215 Euston Road, London, NW1 2BE.
_______________________________________________
List: [email protected]<mailto:[email protected]>
Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
Searchable archive: http://www.mail-archive.com/[email protected]/
Dev site: http://dev.catalyst.perl.org/
_______________________________________________
List: [email protected]<mailto:[email protected]>
Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
Searchable archive: http://www.mail-archive.com/[email protected]/
Dev site: http://dev.catalyst.perl.org/
*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*
T-Systems Austria GesmbH Rennweg 97-99, 1030 Wien
Handelsgericht Wien, FN 79340b
*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*
Notice: This e-mail contains information that is confidential and may be
privileged.
If you are not the intended recipient, please notify the sender and then
delete this e-mail immediately.
*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*
_______________________________________________
List: [email protected]
Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
Searchable archive: http://www.mail-archive.com/[email protected]/
Dev site: http://dev.catalyst.perl.org/