>>>>> "Chris" == Chris Cole <[email protected]> writes:


    Chris> Well, for a start I don't understand the syntax. Why do you only 
escape the
    Chris> first '[' and not the last?

the backslash on "\[]" isn't an escape, it's creating a reference to an
anonymous array. That's the construct for passing arbitrary SQL and
providing the bind values for the placeholders you might have in that
SQL.

    Chris> Knowing when to have a hashref or a arrayref is a bit of
    Chris> nightmare in DBIx. Most times, I plump for one and if it
    Chris> doesn't work I go with the other.

    Chris> In the Cookbook example it's not clear where YEAR() and 
'date_of_birth' come
    Chris> from. I very rarely work with dates and am unfamiliar with date 
manipulation
    Chris> functions. It would also be clearer to state that the 'plain_value' 
assignment
    Chris> is there to replace the placeholder. For example:

YEAR and date_of_birth are arbitrary functions/columns that you included
in a literal SQL snippet.


    Chris> "...the below will search for when the year of birth is 1979:
    Chris> $rs->search(\[ 'YEAR(date_of_birth) = 1979' ]);

    Chris> But, if you wish to use a variable in the comparison a different 
construct is
    Chris> required because there is no variable expansion within single quotes 
in perl:
    Chris> $year = 1979;
    Chris> $rs->search(\[ 'YEAR(date_of_birth) = ?', [ plain_value => $year ] 
]);"

    Chris> The second example in the cookbook, seems wrong. There are 
placeholders for two
    Chris> variables ('name' and 'YEAR(date_of_birth)') in the example SQL, but 
the DBIx
    Chris> code already has 'Bob' specified as the 'name'.

That's because DBIC takes care of building the entire query for you. You
only have to worry about placeholders within the scope of the literal
SQL you're passing into ->search

    Chris> As per my original request, an example showing something other than 
equals would
    Chris> help in understanding how to deal with greater than or less than 
tests. Even
    Chris> now, I wouldn't know where to put a '<' in this complicated 
construct, without
    Chris> an example.

Does

--8<---------------cut here---------------start------------->8---

$rs->search(\[ 'YEAR(date_of_birth) < ?', $year ]);

--8<---------------cut here---------------end--------------->8---

work for you?

    Chris> The SQL::Abstract documentation is worse. I've no idea what 
'bindtype' 'I' have
    Chris> set, seeing as /I/ am not using SQL::Abstract, but DBIx.

You only need to worry about those if you're using Oracle, AFAIK.

-- 
Eden Cardim
Software Engineer
Shadowcat Systems Ltd.
http://www.shadowcat.co.uk
http://blog.edencardim.com

_______________________________________________
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