Hi All,

I'm facing a very weird problem. I'm trying to save data in a loop
where 1 person is sending msg to many people.. Here's the print_r of
the 3 arrays before I call the 'save' function in the model.

Array
(
    [Message] => Array
        (
            [sender_uid_fk_users] => 1
            [subject] => hey
            [body] => hey
            [recipient_uid_fk_users] => 2
            [date] => 2011:03:28 10:52:41
        )

)
Array
(
    [Message] => Array
        (
            [sender_uid_fk_users] => 1
            [subject] => hey
            [body] => hey
            [recipient_uid_fk_users] => 4
            [date] => 2011:03:28 10:52:41
        )

)
Array
(
    [Message] => Array
        (
            [sender_uid_fk_users] => 1
            [subject] => hey
            [body] => hey
            [recipient_uid_fk_users] => 6
            [date] => 2011:03:28 10:52:41
        )

)

The only difference here is the different 'recipient_uid_fk_users' in
all the 3 arrays with values '2', '4', and, '6'.

All I'm doing then is,
foreach(recipient...)
{
        /// prepare $arrayMessagesInfo /////
         $this->save($arrayMessagesInfo);
}

The issue I'm facing is that only the first value gets inserted, and
the rest of the two queries becomes 'update' queries. I'm not even
mentioning the primary key in the array.

These are the cakephp debugging logs:

4       INSERT INTO `messages` (`sender_uid_fk_users`, `subject`,
`body`, `recipient_uid_fk_users`, `date`) VALUES (1, 'hey', 'hey', 2,
'2011:03:28 10:48:33')                1               0
5       SELECT LAST_INSERT_ID() AS insertID             1       1       0
6       SELECT COUNT(*) AS `count` FROM `messages` AS `Message` WHERE
`Message`.`id` = 3                1       1       0
7       SELECT COUNT(*) AS `count` FROM `messages` AS `Message` WHERE
`Message`.`id` = 3                1       1       0
8       UPDATE `messages` SET `sender_uid_fk_users` = 1, `subject` =
'hey', `body` = 'hey', `recipient_uid_fk_users` = 4, `date` =
'2011:03:28 10:48:33' WHERE `messages`.`id` = 3               1
       0
9       SELECT COUNT(*) AS `count` FROM `messages` AS `Message` WHERE
`Message`.`id` = 3                1       1       0
10      SELECT COUNT(*) AS `count` FROM `messages` AS `Message` WHERE
`Message`.`id` = 3                1       1       0
11      UPDATE `messages` SET `sender_uid_fk_users` = 1, `subject` =
'hey', `body` = 'hey', `recipient_uid_fk_users` = 6, `date` =
'2011:03:28 10:48:33' WHERE `messages`.`id` = 3

Here's the table structure:
 CREATE TABLE `messages` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `subject` varchar(100) NOT NULL,
  `body` varchar(500) NOT NULL,
  `sender_uid_fk_users` int(10) unsigned NOT NULL,
  `date` datetime NOT NULL,
  `recipient_uid_fk_users` int(10) unsigned NOT NULL,
  PRIMARY KEY (`id`),
  KEY `sender_uid_fk_users` (`sender_uid_fk_users`),
  KEY `recipient_uid_fk_users` (`recipient_uid_fk_users`),
) ENGINE=MyISAM DEFAULT CHARSET=latin1 |


It would be great if anybody can help me out here.

regards,
Rishab

-- 
Our newest site for the community: CakePHP Video Tutorials 
http://tv.cakephp.org 
Check out the new CakePHP Questions site http://ask.cakephp.org and help others 
with their CakePHP related questions.


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

Reply via email to