[Dbix-class] how to determine column is inflatable?

Felix Antonius Wilhelm Ostmann ostmann at websuche.de
Fri Jan 30 11:25:56 GMT 2009


Carl Franks schrieb:
> 2009/1/30 Ash Berlin <ash_cpan at firemirror.com>:
>   
>> On 30 Jan 2009, at 08:56, Carl Franks wrote:
>>
>>     
>>> 2009/1/29 Ash Berlin <ash_cpan at firemirror.com>:
>>>       
>>>> On 29 Jan 2009, at 22:03, Carl Franks wrote:
>>>>
>>>>         
>>>>> Is it okay to use $result_source->column_info('name')->{_inflate_info}
>>>>> to test whether a column is inflatable / deflatable?
>>>>> It seems a bit too reliant on internals, to me.
>>>>>
>>>>> Or should there be a has_inflatable_column('name') method?
>>>>>
>>>>> (and is that what it should be called? do we really also need a
>>>>> 'has_deflatable_column' too?)
>>>>>
>>>>> If someone makes a call, I'll write up a patch for it.
>>>>>
>>>>> Carl
>>>>>
>>>>>           
>>>> There doesn't seem to be a public way to determine this, and indeed
>>>> accessing anything starting with an _ indicates badness.
>>>>
>>>> First things first - what exactly do you care if a column is inflated or
>>>> not?
>>>>         
>>> In HTML-FormFu-Model-DBIC, I can't just use get/set_column(),
>>> otherwise in/deflators won't get called.
>>> So I've had to document that people can't name fields after DBIC
>>> built-in methods such as 'delete', otherwise when we call $row->$name
>>> it'll trash your db.
>>>
>>> What I'd like to do is allow the use of any name, by doing something like
>>> this:
>>>
>>>   $value = $row->result_source->has_inflated_column
>>>       ? $row->get_inflated_column( $name )
>>>       : $row->get_column( $name );
>>>
>>>   $row->result_source->has_inflated_column
>>>       ? $row->set_inflated_column( $name, $value )
>>>       : $row->set_column( $name, $value );
>>>
>>> I can't just use get/set_inflated_column() for everything, as it
>>> croaks if there's no in/deflator for a column.
>>>       

set_inflated_columns

  my $copy = $orig->set_inflated_columns({ $col => $val, $rel => $obj, 
... });

Sets more than one column value at once, taking care to respect 
inflations and relationships if relevant.


i used it and that dont croak :)



>> And why can't you just do $row->$name() or $row->$name($value) ? (I'm sure
>> there's a reason, I'm just curious as to what it is.)
>>     
>
> If the column name clashes with a DBIC method, such as 'delete', we've
> got a problem.
>
> Carl
>
> _______________________________________________
> List: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/dbix-class
> IRC: irc.perl.org#dbix-class
> SVN: http://dev.catalyst.perl.org/repos/bast/DBIx-Class/
> Searchable Archive: http://www.grokbase.com/group/dbix-class@lists.scsys.co.uk
>
>
>   


-- 
Mit freundlichen Grüßen

Felix Antonius Wilhelm Ostmann
--------------------------------------------------
Websuche   Search   Technology   GmbH   &   Co. KG
Martinistraße 3  -  D-49080  Osnabrück  -  Germany
Tel.:   +49 541 40666-0 - Fax:    +49 541 40666-22
Email: info at websuche.de - Website: www.websuche.de
--------------------------------------------------
AG Osnabrück - HRA 200252 - Ust-Ident: DE814737310
Komplementärin:     Websuche   Search   Technology
Verwaltungs GmbH   -  AG Osnabrück  -   HRB 200359
Geschäftsführer:  Diplom Kaufmann Martin Steinkamp
--------------------------------------------------




More information about the DBIx-Class mailing list