[Dbix-class] Excluding columns from a query

Nick Wellnhofer wellnhofer at aevum.de
Fri Feb 12 12:16:16 GMT 2010


On 12.02.2010 04:49, Rob Kinyon wrote:
> On Thu, Feb 11, 2010 at 17:24, Darren Duncan <darren at darrenduncan.net> wrote:
>> Nick Wellnhofer wrote:
>>>
>>> If I want to exclude a single column from a query I currently have to list
>>> all columns except the one to be excluded in the 'columns' attribute. This
>>> is cumbersone and AFAICS doesn't work with prefetch. It would be nice if I
>>> could simply pass a list of all the columns I want to be excluded including
>>> prefetched ones.
>>>
>>> Or am I missing something?
>>
>> I don't know if you can do that, but it is certainly a very reasonable thing
>> to want to do. -- Darren Duncan
> 
> my $rs2 = $rs->search(
>     undef,
>     {
>         columns => [ grep { $_ ne 'exclude_me' } $rs->resultsource->columns ]
>     }
> );

Thanks for the tip. I keep forgetting about the usefulness of the grep
function. But that doesn't work with prefetch. I think something like
this would be handy:

$rs->search(
    undef,
    {
        prefetch => 'related',
        exclude  => [ 'me.exclude_me', 'related.exclude_me_too' ],
    }
);

> You can also exclude them at the ResultSet level - I leave finding out
> how as an exercise for the reader.

What do you mean? Overriding the search method?

Nick



More information about the DBIx-Class mailing list