[Catalyst] Class::DBI, Controller::Root, set_sql "redefined"

Adam Jacob adam at stalecoffee.org
Tue Jun 6 20:11:14 CEST 2006


On Jun 6, 2006, at 10:21 AM, Marc Brooks wrote:

> The problem at hand though is the complexity of the statements I am  
> using.
> I use the set_sql() from the Class::DBI since I can naturally write my
> statements.  Does the DBIx::Class have an equivalent of the set_sql()?
>
> EXAMPLE:
>
>         SELECT *
>           FROM catalog AS node1, catalog AS node2
>          WHERE node2.lft BETWEEN node1.lft AND node1.rgt
>            AND $level = (
>                SELECT COUNT(*)
>                  FROM catalog AS node3
>                 WHERE node3.lft BETWEEN node1.lft AND node1.rgt
>                   AND node2.lft BETWEEN node3.lft AND node3.rgt
>                   AND node3.id
>                       NOT IN (node2.id, node1.id)
>            )
>            AND node2.id != node1.id AND node1.id = '$id'

It has that, and so much more.  DBIx::Class works by letting you  
create ResultSet's from your data; looking at the database from the  
point of view of getting the data you want out of it (and inflating  
that data into an object you can use).  While DBIx::Class doesn't  
have direct support for sub-selects (yet) you can still accomplish  
them quite easily.

Love the DBIx::Class.  It doesn't solve every problem, but it solves  
the vast majority of them.. and where it makes compromises they tend  
to be acceptable ones.

Adam




More information about the Catalyst mailing list