Re: A better way to save to HABTM join table meta data?
Thanks for the reply mscdex I think if you do it the way I posted (put the field in Tag) you don't need bindModel at all. You can also use save() and not saveAll(). On Mar 5, 2:28 am, mscdex msc...@gmail.com wrote: On Mar 4, 6:52 pm, Omi omi.chowdh...@gmail.com wrote: The correct way is to set $this-data['Tag'][0] = array( 'tag_id' = $foo, 'tagger_id' = $bar ); This is kinda on the right track. Here's an example of what I used for a Movies sample project: views/movies/add.ctp: ?php echo $form-create('Movie'); echo $form-input('Movie.name'); echo $form-input('MoviesUser.0.user_id'); echo $form-input('MoviesUser.0.ranking'); echo $form-end('Submit'); ? controllers/movies_controller.ctp: function add() { if (!empty($this-data)) { $this-Movie-create(); $this-Movie-bindModel(array('hasMany'=array('MoviesUser')), false); if ($this-Movie-saveAll($this-data)) { $this-Session-setFlash(__('The Movie has been saved', true)); $this-redirect(array('action'='index')); } else { $this-Session-setFlash(__('The Movie could not be saved. Please, try again.', true)); } } $users = $this-Movie-User-find('list'); $this-set(compact('users')); } IIRC the key was to do a bindModel with the name of the join relation name as a hasMany association before saving. Hope that helps some. --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups CakePHP group. To post to this group, send email to cake-php@googlegroups.com To unsubscribe from this group, send email to cake-php+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/cake-php?hl=en -~--~~~~--~~--~--~---
A better way to save to HABTM join table meta data?
I've searched through the groups and web, but I can't find any mention of SAVING to the model, only reading from it. Some example Models: Recipes HABTM Tags The recipies_tags table has an extra column which is tagger_id I have tried setting the value in $this-data before the save but this doesn't propagate back to the DB - the HABTM saves with the third column empty (I tried: $this-data['RecipiesTag']['tagger_id'] $this-data['Tag']['RecipiesTag']['tagger_id'] $this-data['Recipie']['RecipiesTag']['tagger_id'] - are there any more locations I should try?) I did find a way of saving to the third column, but it seems pretty hacky: $recipiestag = $this-Tag-RecipiesTag-find('first', array ('conditions' = array( 'RecipiesTag.tag_id' = $this-data['Tag'] ['tag_id'], 'RecipiesTag.user_id' = $this-data['User'] ['id'] ) ) ); $this-Tag-RecipiesTag-id = $recipiestag ['RecipiesTag']['id']; $this-Tag-RecipiesTag-saveField('tagger_id', $user_id); Is there a better way of doing this? --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups CakePHP group. To post to this group, send email to cake-php@googlegroups.com To unsubscribe from this group, send email to cake-php+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/cake-php?hl=en -~--~~~~--~~--~--~---
Re: A better way to save to HABTM join table meta data?
There is! The correct way is to set $this-data['Tag'][0] = array( 'tag_id' = $foo, 'tagger_id' = $bar ); Does this seem unintuitive to anyone else? I think updating the CakePHP Book with saving and retrieving join table data would be very helpful, as this information is hard to find On Mar 4, 10:30 pm, Omi omi.chowdh...@gmail.com wrote: I've searched through the groups and web, but I can't find any mention of SAVING to the model, only reading from it. Some example Models: Recipes HABTM Tags The recipies_tags table has an extra column which is tagger_id I have tried setting the value in $this-data before the save but this doesn't propagate back to the DB - the HABTM saves with the third column empty (I tried: $this-data['RecipiesTag']['tagger_id'] $this-data['Tag']['RecipiesTag']['tagger_id'] $this-data['Recipie']['RecipiesTag']['tagger_id'] - are there any more locations I should try?) I did find a way of saving to the third column, but it seems pretty hacky: $recipiestag = $this-Tag-RecipiesTag-find('first', array ('conditions' = array( 'RecipiesTag.tag_id' = $this-data['Tag'] ['tag_id'], 'RecipiesTag.user_id' = $this-data['User'] ['id'] ) ) ); $this-Tag-RecipiesTag-id = $recipiestag ['RecipiesTag']['id']; $this-Tag-RecipiesTag-saveField('tagger_id', $user_id); Is there a better way of doing this? --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups CakePHP group. To post to this group, send email to cake-php@googlegroups.com To unsubscribe from this group, send email to cake-php+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/cake-php?hl=en -~--~~~~--~~--~--~---
Re: A better way to save to HABTM join table meta data?
'RecipiesTag.user_id' = $this-data['User'] ['id'] should be 'RecipiesTag.recipe_id' = $this-data['Recipe'] ['id'] On Mar 4, 10:30 pm, Omi omi.chowdh...@gmail.com wrote: I've searched through the groups and web, but I can't find any mention of SAVING to the model, only reading from it. Some example Models: Recipes HABTM Tags The recipies_tags table has an extra column which is tagger_id I have tried setting the value in $this-data before the save but this doesn't propagate back to the DB - the HABTM saves with the third column empty (I tried: $this-data['RecipiesTag']['tagger_id'] $this-data['Tag']['RecipiesTag']['tagger_id'] $this-data['Recipie']['RecipiesTag']['tagger_id'] - are there any more locations I should try?) I did find a way of saving to the third column, but it seems pretty hacky: $recipiestag = $this-Tag-RecipiesTag-find('first', array ('conditions' = array( 'RecipiesTag.tag_id' = $this-data['Tag'] ['tag_id'], 'RecipiesTag.user_id' = $this-data['User'] ['id'] ) ) ); $this-Tag-RecipiesTag-id = $recipiestag ['RecipiesTag']['id']; $this-Tag-RecipiesTag-saveField('tagger_id', $user_id); Is there a better way of doing this? --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups CakePHP group. To post to this group, send email to cake-php@googlegroups.com To unsubscribe from this group, send email to cake-php+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/cake-php?hl=en -~--~~~~--~~--~--~---