Better way, when you need virtual class (and not with IN) is:

you add columns into package:

__PACKAGE__->add_columns(
    b => {
        data_type => <some>,
    },

after that you can call resultset standard way (not using bind)
$schema->resultset('TableT')->search({ b=> { IN => \@array }});

When you need exactly your code, there could be problem, because you
send to database array (in
postgres you test contition against array  as ({1,2,3,4}) and not
(1,2,3,4)


On Thu, 2012-03-29 at 15:23 +0000, Alexander Hartmaier wrote:

> Why are you defining this as a virtual view instead of just having a
> result class for the table and adding a method to its resultset class?
> 
> BR, Alex
> 
> Am 2012-03-28 17:40, schrieb William Piel: 
> 
> > Hi all,
> > 
> > 
> > I'd like to create a custom ResultSource query that uses "IN" in the
> > SQL. How can I use the bind parameters so that I can pass an array
> > to provide the contents for IN(…) ?   The below example works so
> > long as @my_array has only one element -- beyond that I get a
> > mismatch in the number of placeholders. Passing it \@my_array does
> > not work. 
> > 
> > 
> > thanks,
> > 
> > 
> > Bill
> > 
> > 
> > 
> > 
> > package My::Schema::Result::TableT; 
> > 
> > use strict;
> > use warnings;
> > use base qw/DBIx::Class::Core/;
> > 
> > 
> > __PACKAGE__->table_class('DBIx::Class::ResultSet::View');
> > 
> > 
> > __PACKAGE__->result_source_instance->is_virtual(1);
> > 
> > 
> > __PACKAGE__->result_source_instance->view_definition(q[
> >    SELECT t.x, t.y, t.z
> >    FROM table t
> >    WHERE t.a = ?
> >    AND t.b IN (?);
> > ]);
> > 
> > 
> > my $results = $schema->resultset( 'TableT' )->search( {}, { bind
> >  => [ $my_scalar, @my_array ]} );
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> > _______________________________________________
> > 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/[email protected]
> 
> 
> 
> *"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*
> 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: 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/[email protected]

Reply via email to