[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