# search for im_network @search_msgs = $schema->resultset('Message')->search( { 'from_user.im_network' => 'Yahoo', }, { join => 'from_user' }, ); ok (scalar @search_msgs == 2, 'join message to user'); # search for receiving_user @search_msgs = $schema->resultset('Message')->search( { 'user.im_username' => 'linux_rohan', }, { join => { conversation => { 'users' => 'user' } } }, ); ok (scalar @search_msgs == 2, 'join message to users'); #### SELECT me.id, me.conversation, me.from_user, me.message, me.timestamp FROM message me JOIN user from_user ON ( from_user.id = me.from_user ) WHERE ( from_user.im_network = ? ): 'Yahoo' SELECT me.id, me.conversation, me.from_user, me.message, me.timestamp FROM message me JOIN conversation conversation ON ( conversation.id = me.conversation ) LEFT JOIN conversation_user users ON ( users.conversation = conversation.id ) LEFT JOIN user user ON ( user.id = users.user ) WHERE ( user.im_username = ? ): 'linux_rohan' #### { join => [ conversation => { 'users' => 'user' }, 'from_user', ]};