Hi!

I want to have a running numer for all entries for a specific blog, so
would this code be the cake way or what would be better?


Here are my Tables:

MySQL Table blogs:
 id        | next_entry_id | ...
 Autoincr. | int-default 1 |
--------------------------------
 1         | 2             | ...
 2         | 1             | ...
 3         | 4             | ...

Blog hasMany Entries

Because cake understands only single keys I have
the id (in an normal Model blod_id AND display would be the key
together...)

displayed_id = an autoincrement on one blog
(this shoudl be static, so when I have 4 entries for blog x and I
delete entry 3, entry 4 should stay entry 4 and not become 3, thats
why I need another column for the display_id)
MySQL Table entries:
 id        | blog_id | display_id | ...
 Autoincr. | int     | int        | ...
---------------------------------------
 1         | 1       | 1          | ...
 2         | 3       | 1          | ...
 3         | 3       | 2          | ...
 4         | 3       | 3          | ...




__________________________________________________


So now to automatically set the right display_id I would add this
function to the Entries Model:


[CODE lang=PHP]
function beforeSave() {
  // is it an insert?
  if(!isset($this->data['Entry']['id']) {
      // new entry, so get the display_id
      mysql_query("lock record in blogs where blog_id = '".$this->data
['Entry']['blog_id']."'");
      $result = mysql_query("select next_entry_id from blogs where
blog_id = '".$this->data['Entry']['blog_id']."'");
       if(!$next_entry_id = mysql_fetch_array($result, MYSQL_NUM)) {
         return false;
       }
       mysql_query("update next_entry_id in blogs set next_entry_id =
'".$next_entry_id+1."' where blog_id = '".$this->data['Entry']
['blog_id']."'");
       mysql_query("unlock table blogs");
       $this->data['Entry']['display_id'] = $next_entry_id;
  }
  return true;
}
[/CODE]

thx
Aurelius
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to