Is the bindModel any better than the joins? http://book.cakephp.org/view/1047/Joining-tables
the joins are working for me. however of course the reason why i am asking so many quesitons is to increase my working knowledge of Cake for what works and what does not. thank you. On May 3, 3:52 pm, AD7six <[email protected]> wrote: > On May 3, 7:02 am, Kei Simone <[email protected]> wrote: > > > > > > > Hi i did this > > > $this->Behaviors->attach('Containable'); > > $this->User->Behaviors->attach('Containable'); > > $this->Shop->Behaviors->attach('Containable'); > > $this->Shop->Domain->Behaviors->attach('Containable'); > > > $this->recursive = -1; > > $this->User->recursive = -1; > > $this->Shop->recursive = -1; > > $this->Shop->Domain->recursive = -1; > > > return $this->find('first', array( > > // conditions for the main model > > 'conditions'=>array('Merchant.owner'=>1), > > // contain > > 'contain'=>array( > > 'User'=>array( > > // conditions for the user model > > > > 'conditions'=>array('User.group_id'=>MERCHANTS, > > 'User.email' => > > '[email protected]',), > > > ), > > 'Shop'=>array( > > > > 'conditions'=>array('Shop.web_address' => 'http:// > > abc.myspree2shop.com',), > > 'Domain'), > > ) > > )); > > > i got this in the sql query log > > > SELECT `Merchant`.`id`, `Merchant`.`owner`, `Merchant`.`shop_id`, > > `Merchant`.`user_id`, `Shop`.`id`, `Shop`.`theme_id`, `Shop`.`name`, > > `Shop`.`web_address`, `Shop`.`created_on`, `Shop`.`modified_on`, > > `Shop`.`status`, `User`.`id`, `User`.`email`, `User`.`password`, > > `User`.`group_id`, `User`.`full_name`, `User`.`name_to_call`, > > `User`.`last_login_on`, `User`.`status`, `User`.`created_on`, > > `User`.`modified_on` FROM `merchants` AS `Merchant` LEFT JOIN `shops` > > AS `Shop` ON (`Merchant`.`shop_id` = `Shop`.`id` AND > > `Shop`.`web_address` = 'http://abc.myspree2shop.com') LEFT JOIN > > `users` AS `User` ON (`Merchant`.`user_id` = `User`.`id` AND > > `User`.`group_id` = 3 AND `User`.`email` = '[email protected]') WHERE > > `Merchant`.`owner` = 1 LIMIT 1 > > > SELECT `Shop`.`id`, `Shop`.`theme_id`, `Shop`.`name`, > > `Shop`.`web_address`, `Shop`.`created_on`, `Shop`.`modified_on`, > > `Shop`.`status` FROM `shops` AS `Shop` WHERE `Shop`.`id` = 1 AND > > `Shop`.`web_address` = 'http://abc.myspree2shop.com' > > > SELECT `User`.`id`, `User`.`email`, `User`.`password`, > > `User`.`group_id`, `User`.`full_name`, `User`.`name_to_call`, > > `User`.`last_login_on`, `User`.`status`, `User`.`created_on`, > > `User`.`modified_on` FROM `users` AS `User` WHERE `User`.`id` = 1 AND > > `User`.`group_id` = 3 AND `User`.`email` = '[email protected]' > > > i got this result > > > Array > > ( > > [Merchant] => Array > > ( > > [id] => 1 > > [owner] => 1 > > [shop_id] => 1 > > [user_id] => 1 > > ) > > > [Shop] => Array > > ( > > [id] => > > [theme_id] => > > [name] => > > [web_address] => > > [created_on] => > > [modified_on] => > > [status] => > > ) > > > [User] => Array > > ( > > [id] => > > [email] => > > [password] => > > [group_id] => > > [full_name] => > > [name_to_call] => > > [last_login_on] => > > [status] => > > [created_on] => > > [modified_on] => > > ) > > > ) > > > When i changed your recommendation to > > > return $this->find('first', > > array( > > 'contain'=>array( > > 'User', > > 'Shop' => > > array('Domain' > > ), > > > ), > > 'conditions' => > > array('User.group_id'=>MERCHANTS, > > 'User.email' => > > '[email protected]', > > > 'Shop.web_address' => 'http://abc.myspree2shop.com', > > ) > > ) > > ); > > > all i did was to move all the conditions to the main model. > > > i got this in my sql query log: > > SELECT `Merchant`.`id`, `Merchant`.`owner`, `Merchant`.`shop_id`, > > `Merchant`.`user_id`, `Shop`.`id`, `Shop`.`theme_id`, `Shop`.`name`, > > `Shop`.`web_address`, `Shop`.`created_on`, `Shop`.`modified_on`, > > `Shop`.`status`, `User`.`id`, `User`.`email`, `User`.`password`, > > `User`.`group_id`, `User`.`full_name`, `User`.`name_to_call`, > > `User`.`last_login_on`, `User`.`status`, `User`.`created_on`, > > `User`.`modified_on` FROM `merchants` AS `Merchant` LEFT JOIN `shops` > > AS `Shop` ON (`Merchant`.`shop_id` = `Shop`.`id`) LEFT JOIN `users` AS > > `User` ON (`Merchant`.`user_id` = `User`.`id`) WHERE `User`.`group_id` > > = 3 AND `User`.`email` = '[email protected]' AND `Shop`.`web_address` = > > 'http://abc.myspree2shop.com'LIMIT1 > > > SELECT `Shop`.`id`, `Shop`.`theme_id`, `Shop`.`name`, > > `Shop`.`web_address`, `Shop`.`created_on`, `Shop`.`modified_on`, > > `Shop`.`status` FROM `shops` AS `Shop` WHERE `Shop`.`id` = 2 > > > SELECT `Domain`.`id`, `Domain`.`domain`, `Domain`.`shop_id`, > > `Domain`.`primary`, `Domain`.`always_redirect_here` FROM `domains` AS > > `Domain` WHERE `Domain`.`shop_id` = (2) > > > i got this in my result: > > > Array > > ( > > [Merchant] => Array > > ( > > [id] => 2 > > [owner] => 1 > > [shop_id] => 2 > > [user_id] => 2 > > ) > > > [Shop] => Array > > ( > > [id] => 2 > > [theme_id] => 0 > > [name] => > > [web_address] =>http://abc.myspree2shop.com > > [created_on] => 2010-05-03 04:36:08 > > [modified_on] => 0000-00-00 00:00:00 > > [status] => 1 > > [Domain] => Array > > ( > > [0] => Array > > ( > > [id] => 2 > > [domain] =>http://abc.myspree2shop.com > > [shop_id] => 2 > > [primary] => 1 > > [always_redirect_here] => 0 > > ) > > > ) > > > ) > > > [User] => Array > > ( > > [id] => 2 > > [email] => [email protected] > > [password] => password > > [group_id] => 3 > > [full_name] => ally > > [name_to_call] => ally > > [last_login_on] => > > [status] => 1 > > [created_on] => 2010-05-03 04:36:08 > > [modified_on] => 0000-00-00 00:00:00 > > ) > > > ) > > > Something is wrong here. i think the document is missing something. i > > cannot be sure. > > > I have to say that i CANNOT use Containable the moment i need to set > > conditions for the models that are 2 steps away > > Containable isn't designed or suitable for that sort of thing. > > Try the linkable behavior of my own onequery. Know that both of these > behaviors are not doing anything you can't achieve yourself using bind > model (see habtm docs in the book and see the Filter example). The > key, always, to "complex" queries (IMO) is to write the sql first and > then simply bindModel('belongsTo .... for each join you want to > achieve. > > hth, > > ADhttp://rafaelbandeira3.wordpress.com/2008/11/16/linkable-behavior-tak...http://github.com/AD7six/mi/blob/master/models/behaviors/one_query.php > > Check out the new CakePHP Questions sitehttp://cakeqs.organd help others with > their CakePHP related questions. > > You received this message because you are subscribed to the Google Groups > "CakePHP" group. > To post to this group, send email to [email protected] > To unsubscribe from this group, send email to > [email protected] For more options, visit this group > athttp://groups.google.com/group/cake-php?hl=en Check out the new CakePHP Questions site http://cakeqs.org and help others with their CakePHP related questions. You received this message because you are subscribed to the Google Groups "CakePHP" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/cake-php?hl=en
