[Dbix-class] Problems while using the newest DBIx-Class-current

Nilson Santos Figueiredo Junior acid06 at gmail.com
Fri Jun 30 22:19:52 CEST 2006


On 6/30/06, Matt S Trout <dbix-class at trout.me.uk> wrote:
> I don't think {attrs}{alias} has been munged right as DBIC traversed the
> search_relateds in the many-many. Not sure exactly why though - can you have a
> dig around in that resultset and see what you've ended up with please?

By "dig around" you mean a dump of it?

If that's the case, here it is (but I don't really think that's what
you mean, since I think it'd be really hard to figure anything out of
this enormous dump):

#!/usr/bin/perl

print "Hello, World...\n";

'tasks' => bless( {
                      'cond' => {
                                  'me.user_id' => '1'
                                },
                      'result_class' => 'MyTasks::Model::Persistent::Task',
                      'attrs' => {
                                   '_live_join_stack' => [
                                                           'task'
                                                         ],
                                   '_live_join' => 'task',
                                   'where' => $VAR1->{'tasks'}{'cond'},
                                   'cascade_copy' => 1,
                                   'cascade_delete' => 1,
                                   'accessor' => 'multi',
                                   'join' => {
                                               'task' => [
                                                           'logs'
                                                         ]
                                             },
                                   'as' => [
                                             'id',
                                             'project_id',
                                             'creator_id',
                                             'date',
                                             'deadline',
                                             'priority',
                                             'description',
                                             'is_closed',
                                             'comments',
                                             'parent_id',
                                             'hours_spent'
                                           ],
                                   'group_by' => [
                                                   'me.id'
                                                 ],
                                   'join_type' => 'LEFT',
                                   'alias' => 'me',
                                   'select' => [
                                                 'me.id',
                                                 'me.project_id',
                                                 'me.creator_id',
                                                 'me.date',
                                                 'me.deadline',
                                                 'me.priority',
                                                 'me.description',
                                                 'me.is_closed',
                                                 'me.comments',
                                                 'me.parent_id',
                                                 {
                                                   'sum' => 'logs.hours_spent'
                                                 }
                                               ],
                                   '_live_join_h' => 'task'
                                 },
                      'count' => undef,
                      'page' => undef,
                      '_attrs' => {
                                    'seen_join' => {
                                                     'task' => 1,
                                                     'logs' => 1
                                                   },
                                    '_live_join_stack' => [
                                                            'task'
                                                          ],
                                    'order_by' => [],
                                    '_live_join' => 'task',
                                    'accessor' => 'multi',
                                    'cascade_delete' => 1,
                                    'cascade_copy' => 1,
                                    'where' => {
                                                 'me.user_id' => '1'
                                               },
                                    'as' => [
                                              'id',
                                              'project_id',
                                              'creator_id',
                                              'date',
                                              'deadline',
                                              'priority',
                                              'description',
                                              'is_closed',
                                              'comments',
                                              'parent_id',
                                              'hours_spent'
                                            ],
                                    'from' => [
                                                {
                                                  'me' => 'task_user'
                                                },
                                                [
                                                  {
                                                    '-join_type' => '',
                                                    'task' => 'task'
                                                  },
                                                  {
                                                    'task.id' => 'me.task_id'
                                                  }
                                                ],
                                                [
                                                  {
                                                    '-join_type' => 'LEFT',
                                                    'logs' => 'task_log'
                                                  },
                                                  {
                                                    'logs.task_id' => 'task.id'
                                                  }
                                                ]
                                              ],
                                    'collapse' => {},
                                    'join_type' => 'LEFT',
                                    'group_by' => [
                                                    'me.id'
                                                  ],
                                    'alias' => 'me',
                                    '_live_join_h' => 'task',
                                    'select' => [
                                                  'me.id',
                                                  'me.project_id',
                                                  'me.creator_id',
                                                  'me.date',
                                                  'me.deadline',
                                                  'me.priority',
                                                  'me.description',
                                                  'me.is_closed',
                                                  'me.comments',
                                                  'me.parent_id',
                                                  {
                                                    'sum' => 'logs.hours_spent'
                                                  }
                                                ]
                                  },
                      '_parent_rs' => bless( {
                                               'resultset_attributes' => {

    'alias' => 'me'
                                                                         },
                                               'result_class' =>
'MyTasks::Model::Persistent::TaskUser',
                                               'name' => 'task_user',
                                               'schema' => bless( {

'class_mappings' => {

                   'MyTasks::Model::Persistent::TaskLog' => 'TaskLog',

                   'MyTasks::Schema::Project' => 'Project',

                   'MyTasks::Model::Persistent::Task' => 'Task',

                   'MyTasks::Schema::Task' => 'Task',

                   'MyTasks::Model::Persistent::Project' => 'Project',

                   'MyTasks::Model::Persistent::Session' => 'Session',

                   'MyTasks::Model::Persistent::TaskUser' =>
'TaskUser',

                   'MyTasks::Schema::TaskLog' => 'TaskLog',

                   'MyTasks::Schema::TaskUser' => 'TaskUser',

                   'MyTasks::Schema::User' => 'User',

                   'MyTasks::Model::Persistent::User' => 'User',

                   'MyTasks::Schema::Session' => 'Session'

                 },

'source_registrations' => {

                         'TaskUser' => $VAR1->{'tasks'}{'_parent_rs'},

                         'TaskLog' => bless( {

                                               'resultset_attributes'
=> {},

                                               'result_class' =>
'MyTasks::Model::Persistent::TaskLog',

                                               'name' => 'task_log',

                                               'schema' =>
$VAR1->{'tasks'}{'_parent_rs'}{'schema'},

                                               '_relationships' => {


'user' => {


          'cond' => {


                      'foreign.id' => 'self.user_id'


                    },


          'source' => 'MyTasks::Schema::User',


          'attrs' => {


                       'accessor' => 'single'


                     },


          'class' => 'MyTasks::Schema::User'


        },


'task' => {


          'cond' => {


                      'foreign.id' => 'self.task_id'


                    },


          'source' => 'MyTasks::Schema::Task',


          'attrs' => {


                       'accessor' => 'single'


                     },


          'class' => 'MyTasks::Schema::Task'


        }

                                                                   },

                                               'source_name' =>
'TaskLog',

                                               '_columns_info_loaded'
=> 0,

                                               '_ordered_columns' => [


'id',


'task_id',


'user_id',


'date',


'hours_spent',


'comments'


],

                                               '_primaries' => [

                                                                 'id'

                                                               ],

                                               '_resultset' => undef,

                                               'resultset_class' =>
'DBIx::Class::ResultSet',

                                               '_unique_constraints'
=> {


   'primary' =>
$VAR1->{'tasks'}{'_parent_rs'}{'schema'}{'source_registrations'}{'TaskLog'}{'_primaries'}


 },

                                               '_columns' => {


'hours_spent' => {},

                                                               'date'
=> {


    '_inflate_info' => {


                         'inflate' => sub { "DUMMY" },


                         'deflate' => sub { "DUMMY" }


                       }


  },


'user_id' => {},

                                                               'id' =>
{},


'comments' => {},


'task_id' => {}

                                                             }

                                             },
'DBIx::Class::ResultSource::Table' ),

                         'Session' => bless( {

                                               'resultset_attributes'
=> {


    '_live_join' => '',


    'alias' => 'me'


  },

                                               'result_class' =>
'MyTasks::Model::Persistent::Session',

                                               'name' => 'session',

                                               'schema' =>
$VAR1->{'tasks'}{'_parent_rs'}{'schema'},

                                               '_relationships' => {},

                                               'source_name' =>
'Session',

                                               '_columns_info_loaded'
=> 0,

                                               '_ordered_columns' => [


'id',


'expires',


'session_data'


],

                                               '_primaries' => [

                                                                 'id'

                                                               ],

                                               '_resultset' => undef,

                                               'resultset_class' =>
'DBIx::Class::ResultSet',

                                               '_unique_constraints'
=> {


   'primary' =>
$VAR1->{'tasks'}{'_parent_rs'}{'schema'}{'source_registrations'}{'Session'}{'_primaries'}


 },

                                               '_columns' => {


'session_data' => {},

                                                               'id' =>
{},


'expires' => {}

                                                             }

                                             },
'DBIx::Class::ResultSource::Table' ),

                         'User' => bless( {

                                            'resultset_attributes' =>
{


 'alias' => 'me'


},

                                            'result_class' =>
'MyTasks::Model::Persistent::User',

                                            'name' => 'user',

                                            'schema' =>
$VAR1->{'tasks'}{'_parent_rs'}{'schema'},

                                            '_relationships' => {


'created_tasks' => {


                'cond' => {


                            'foreign.creator_id' => 'self.id'


                          },


                'source' => 'MyTasks::Schema::Task',


                'attrs' => {


                             'join_type' => 'LEFT',


                             'cascade_copy' => 1,


                             'cascade_delete' => 1,


                             'accessor' => 'multi'


                           },


                'class' => 'MyTasks::Schema::Task'


              },


'task_users' => {


             'cond' => {


                         'foreign.user_id' => 'self.id'


                       },


             'source' => 'MyTasks::Schema::TaskUser',


             'attrs' => {


                          'join_type' => 'LEFT',


                          'cascade_copy' => 1,


                          'cascade_delete' => 1,


                          'accessor' => 'multi'


                        },


             'class' => 'MyTasks::Schema::TaskUser'


           },


'logs' => {


       'cond' => {


                   'foreign.user_id' => 'self.id'


                 },


       'source' => 'MyTasks::Schema::TaskLog',


       'attrs' => {


                    'join_type' => 'LEFT',


                    'cascade_copy' => 1,


                    'cascade_delete' => 1,


                    'accessor' => 'multi'


                  },


       'class' => 'MyTasks::Schema::TaskLog'


     }

                                                                },

                                            'source_name' => 'User',

                                            '_columns_info_loaded' =>
0,

                                            '_ordered_columns' => [


'id',


'login',


'passwd',


'name',


'type'

                                                                  ],

                                            '_primaries' => [

                                                              'id'

                                                            ],

                                            '_resultset' => undef,

                                            'resultset_class' =>
'DBIx::Class::ResultSet',

                                            '_unique_constraints' => {


'primary' => $VAR1->{'tasks'}{'_parent_rs'}{'schema'}{'source_registrations'}{'User'}{'_primaries'}


},

                                            '_columns' => {

                                                            'passwd'
=> {},

                                                            'name' =>
{},

                                                            'type' =>
{},

                                                            'id' =>
{},

                                                            'login' =>
{}

                                                          }

                                          },
'DBIx::Class::ResultSource::Table' ),

                         'Project' => bless( {

                                               'resultset_attributes'
=> {},

                                               'result_class' =>
'MyTasks::Model::Persistent::Project',

                                               'name' => 'project',

                                               'schema' =>
$VAR1->{'tasks'}{'_parent_rs'}{'schema'},

                                               '_relationships' => {


'tasks' => {


           'cond' => {


                       'foreign.project_id' => 'self.id'


                     },


           'source' => 'MyTasks::Schema::Task',


           'attrs' => {


                        'join_type' => 'LEFT',


                        'cascade_copy' => 1,


                        'cascade_delete' => 1,


                        'accessor' => 'multi'


                      },


           'class' => 'MyTasks::Schema::Task'


         }

                                                                   },

                                               'source_name' =>
'Project',

                                               '_columns_info_loaded'
=> 0,

                                               '_ordered_columns' => [


'id',


'name'


],

                                               '_primaries' => [

                                                                 'id'

                                                               ],

                                               '_resultset' => undef,

                                               'resultset_class' =>
'DBIx::Class::ResultSet',

                                               '_unique_constraints'
=> {


   'primary' =>
$VAR1->{'tasks'}{'_parent_rs'}{'schema'}{'source_registrations'}{'Project'}{'_primaries'}


 },

                                               '_columns' => {

                                                               'name'
=> {},

                                                               'id' =>
{}

                                                             }

                                             },
'DBIx::Class::ResultSource::Table' ),

                         'Task' => bless( {

                                            'resultset_attributes' =>
{


 'alias' => 'me'


},

                                            'result_class' =>
'MyTasks::Model::Persistent::Task',

                                            'name' => 'task',

                                            'schema' =>
$VAR1->{'tasks'}{'_parent_rs'}{'schema'},

                                            '_relationships' => {


'parent_task' => {


              'cond' => {


                          'foreign.id' => 'self.parent_id'


                        },


              'source' => 'MyTasks::Schema::Task',


              'attrs' => {


                           'accessor' => 'single'


                         },


              'class' => 'MyTasks::Schema::Task'


            },


'creator' => {


          'cond' => {


                      'foreign.id' => 'self.creator_id'


                    },


          'source' => 'MyTasks::Schema::User',


          'attrs' => {


                       'accessor' => 'single'


                     },


          'class' => 'MyTasks::Schema::User'


        },


'child_tasks' => {


              'cond' => {


                          'foreign.parent_id' => 'self.id'


                        },


              'source' => 'MyTasks::Schema::Task',


              'attrs' => {


                           'join_type' => 'LEFT',


                           'cascade_copy' => 1,


                           'cascade_delete' => 1,


                           'accessor' => 'multi'


                         },


              'class' => 'MyTasks::Schema::Task'


            },


'project' => {


          'cond' => {


                      'foreign.id' => 'self.project_id'


                    },


          'source' => 'MyTasks::Schema::Project',


          'attrs' => {


                       'accessor' => 'single'


                     },


          'class' => 'MyTasks::Schema::Project'


        },


'task_users' => {


             'cond' => {


                         'foreign.task_id' => 'self.id'


                       },


             'source' => 'MyTasks::Schema::TaskUser',


             'attrs' => {


                          'join_type' => 'LEFT',


                          'cascade_copy' => 1,


                          'cascade_delete' => 1,


                          'accessor' => 'multi'


                        },


             'class' => 'MyTasks::Schema::TaskUser'


           },


'logs' => {


       'cond' => {


                   'foreign.task_id' => 'self.id'


                 },


       'source' => 'MyTasks::Schema::TaskLog',


       'attrs' => {


                    'join_type' => 'LEFT',


                    'cascade_copy' => 1,


                    'cascade_delete' => 1,


                    'accessor' => 'multi'


                  },


       'class' => 'MyTasks::Schema::TaskLog'


     }

                                                                },

                                            'source_name' => 'Task',

                                            '_columns_info_loaded' =>
0,

                                            '_ordered_columns' => [


'id',


'project_id',


'creator_id',


'date',


'deadline',


'priority',


'description',


'is_closed',


'comments',


'parent_id'

                                                                  ],

                                            '_primaries' => [

                                                              'id'

                                                            ],

                                            '_resultset' => undef,

                                            'resultset_class' =>
'MyTasks::Schema::ResultSet::Task',

                                            '_unique_constraints' => {


'primary' => $VAR1->{'tasks'}{'_parent_rs'}{'schema'}{'source_registrations'}{'Task'}{'_primaries'}


},

                                            '_columns' => {

                                                            'priority'
=> {},

                                                            'date' =>
{


 '_inflate_info' => {


                      'inflate' => sub { "DUMMY" },


                      'deflate' => sub { "DUMMY" }


                    }


},

                                                            'deadline'
=> {


     '_inflate_info' => {


                          'inflate' => sub { "DUMMY" },


                          'deflate' => sub { "DUMMY" }


                        }


   },

                                                            'comments'
=> {},


'description' => {},


'parent_id' => {},


'is_closed' => {},

                                                            'id' =>
{},


'project_id' => {},


'creator_id' => {}

                                                          }

                                          },
'DBIx::Class::ResultSource::Table' )

                       },

'storage' => bless( {

                   '_conn_pid' => 1812,

                   'debugobj' => bless( {

                                          'debugfh' => bless(
\*Symbol::GEN0, 'IO::File' )

                                        },
'DBIx::Class::Storage::Statistics' ),

                   'transaction_depth' => 0,

                   'cursor' => 'DBIx::Class::Storage::DBI::Cursor',

                   '_dbh' => bless( {}, 'DBI::db' ),

                   '_sql_maker' => bless( {

                                            'cmp' => '=',

                                            'quote_char' => '',

                                            'limit_dialect' =>
$VAR1->{'tasks'}{'_parent_rs'}{'schema'}{'storage'}{'_dbh'},

                                            'bindtype' => 'normal'

                                          }, 'DBIC::SQL::Abstract' ),

                   '_connect_info' => [

                                        'dbi:mysql:mytasks:localhost',

                                        'root',

                                        'root'

                                      ]

                 }, 'DBIx::Class::Storage::DBI::mysql' )
                                                                  },
'MyTasks::Schema' ),
                                               '_relationships' => {
                                                                     'user' => {

          'cond' => {

                      'foreign.id' => 'self.user_id'

                    },

          'source' => 'MyTasks::Schema::User',

          'attrs' => {

                       'accessor' => 'single'

                     },

          'class' => 'MyTasks::Schema::User'

        },
                                                                     'task' => {

          'cond' => {

                      'foreign.id' => 'self.task_id'

                    },

          'source' => 'MyTasks::Schema::Task',

          'attrs' => {

                       'accessor' => 'single'

                     },

          'class' => 'MyTasks::Schema::Task'
                                                                               }
                                                                   },
                                               'source_name' => 'TaskUser',
                                               '_columns_info_loaded' => 0,
                                               '_ordered_columns' => [

'task_id',
                                                                       'user_id'
                                                                     ],
                                               '_primaries' => [
                                                                 'task_id',
                                                                 'user_id'
                                                               ],
                                               '_resultset' => undef,
                                               'resultset_class' =>
'DBIx::Class::ResultSet',
                                               '_unique_constraints' => {

   'primary' => $VAR1->{'tasks'}{'_parent_rs'}{'_primaries'}
                                                                        },
                                               '_columns' => {
                                                               'user_id' => {},
                                                               'task_id' => {}
                                                             }
                                             },
'DBIx::Class::ResultSource::Table' ),
                      'result_source' =>
$VAR1->{'tasks'}{'_parent_rs'}{'schema'}{'source_registrations'}{'Task'},
                      'pager' => undef
                    }, 'MyTasks::Schema::ResultSet::Task' ),
  'created_tasks' => bless( {
                              'cond' => {
                                          'me.creator_id' => '1'
                                        },
                              'result_class' =>
'MyTasks::Model::Persistent::Task',
                              'attrs' => {
                                           'where' =>
$VAR1->{'created_tasks'}{'cond'},
                                           'cascade_copy' => 1,
                                           'cascade_delete' => 1,
                                           'accessor' => 'multi',
                                           'join' => [
                                                       'logs'
                                                     ],
                                           'as' => [
                                                     'id',
                                                     'project_id',
                                                     'creator_id',
                                                     'date',
                                                     'deadline',
                                                     'priority',
                                                     'description',
                                                     'is_closed',
                                                     'comments',
                                                     'parent_id',
                                                     'hours_spent'
                                                   ],
                                           'join_type' => 'LEFT',
                                           'group_by' => [
                                                           'me.id'
                                                         ],
                                           'alias' => 'me',
                                           'select' => [
                                                         'me.id',
                                                         'me.project_id',
                                                         'me.creator_id',
                                                         'me.date',
                                                         'me.deadline',
                                                         'me.priority',
                                                         'me.description',
                                                         'me.is_closed',
                                                         'me.comments',
                                                         'me.parent_id',
                                                         {
                                                           'sum' =>
'logs.hours_spent'
                                                         }
                                                       ]
                                         },
                              'count' => undef,
                              'page' => undef,
                              'result_source' =>
$VAR1->{'tasks'}{'_parent_rs'}{'schema'}{'source_registrations'}{'Task'},
                              'pager' => undef
                            }, 'MyTasks::Schema::ResultSet::Task' ),
  'user' => bless( {
                     'related_resultsets' => {
                                               'created_tasks' => bless( {

    'cond' => $VAR1->{'created_tasks'}{'cond'},

    'result_class' => 'MyTasks::Model::Persistent::Task',

    'attrs' => {

                 'join_type' => 'LEFT',

                 'alias' => 'me',

                 'where' => $VAR1->{'created_tasks'}{'cond'},

                 'cascade_copy' => 1,

                 'cascade_delete' => 1,

                 'accessor' => 'multi'

               },

    'count' => undef,

    'page' => undef,

    'result_source' =>
$VAR1->{'tasks'}{'_parent_rs'}{'schema'}{'source_registrations'}{'Task'},

    'pager' => undef

  }, 'MyTasks::Schema::ResultSet::Task' ),
                                               'task_users' => bless( {

 'cond' => $VAR1->{'tasks'}{'cond'},

 'result_class' => 'MyTasks::Model::Persistent::TaskUser',

 'attrs' => {

              'join_type' => 'LEFT',

              'alias' => 'me',

              'where' => $VAR1->{'tasks'}{'cond'},

              'cascade_copy' => 1,

              'cascade_delete' => 1,

              'accessor' => 'multi'

            },

 'count' => undef,

 'page' => undef,

 'result_source' => $VAR1->{'tasks'}{'_parent_rs'},

 'pager' => undef

}, 'DBIx::Class::ResultSet' )
                                             },
                     'result_source' =>
$VAR1->{'tasks'}{'_parent_rs'}{'schema'}{'source_registrations'}{'User'},
                     '_inflated_column' => {},
                     '_in_storage' => 1,
                     '_column_data' => {
                                         'passwd' =>
'9c405163c4de5cf5d7f0deb741a7e27e',
                                         'name' => 'Nilson Santos F. Jr.',
                                         'type' => 'A',
                                         'id' => '1',
                                         'login' => 'nilson'
                                       }
                   }, 'MyTasks::Model::Persistent::User' )
}

-Nilson Santos F. Jr.



More information about the Dbix-class mailing list