[Dbix-class] Re: How to grep field types?
RA Jones
ra.jones at dpw.clara.co.uk
Fri May 11 13:10:52 GMT 2007
A. Pagaltzis wrote:
> Hi RA,
>
> * RA Jones <ra.jones at dpw.clara.co.uk> [2007-05-11 12:55]:
>
>> In a Cat controller, the equivalent of $schema->source('Foo')
>> is $c->model->('Schema::Foo') ?
>>
>
> that returns a ResultSet, not a ResultSource. You get the source
> by asking the set for it using… uh… `result_source`.
>
>
>> my @date_fields = grep {
>> $c->model('Schema::Foo')->column_info($_)->{data_type} eq 'date' } keys
>> %{ $form->field };
>>
>
> That unnecessarily goes down the chain for every key in the hash.
>
> my $src = $c->model('Schema::Foo')->result_source;
>
> my @date_fields = (
> grep { $src->column_info($_)->{data_type} eq 'date' }
> keys %{ $form->field }
> );
>
> Regards,
>
Yep, that works, provided I use 'DATE' not 'date'. But because this
controller method is generating an sql 'where' from two schemas, I have
to do this:
foreach( qw/Schema::Foo Schema::Bar/ ) {
my $schema = $_;
my $src = $c->model($schema)->result_source;
push @date_fields, grep { $src->column_info($_)->{data_type} eq 'DATE'
} $src->columns;
}
which is why I wanted to use the $form object originally, as that
contains the combined fields from both Schemas.
One day I'll actually 'get' this stuff ;-)
--
Richard Jones
**********************************************************************
This message may contain confidential and privileged information.
If you are not the intended recipient please accept our apologies.
Please do not disclose, copy or distribute information in this e-mail
or take any action in reliance on its contents: to do so is strictly
prohibited and may be unlawful. Please inform us that this message has
gone astray before deleting it. Thank you for your co-operation.
NHSmail is used daily by over 100,000 staff in the NHS. Over a million
messages are sent every day by the system. To find out why more and
more NHS personnel are switching to this NHS Connecting for Health
system please visit www.connectingforhealth.nhs.uk/nhsmail
**********************************************************************
More information about the Dbix-class
mailing list