Home » Database » DB_DataObject » Bug #3255
Set Id for new objects
Details
| Request #3255 | Set Id for new objects |
|---|---|
| Submitted | 2005-01-20 21:57 UTC |
| From | info at rhalff dot com |
| Status | Feedback |
| Package | DB_DataObject |
| PHP Version | Irrelevant |
| OS | Debian |
| Roadmaps | (Not assigned) |
Comments
[2005-01-20 21:57 UTC] info at rhalff dot com
Description:
------------
I needed support to add a key manually for newly created objects (not using auto_increment or sequences)
Here's the diff against the stable version 1.7.2.
I'm using this in many dataObjects, so I consider it well tested :)
Basically it allows me to set the key for new objects.
Like:
$item = new Item();
$item->insert();
$document = new Document()
$document->setId($item->id);
$document->insert();
In this case documentID references itemID (innodb reference);
The only change needed to support this is within the insert method.
========================================================
laptop:~/DataObject# diff DataObject.orig DataObject.php
873,874c873,874
<
< if (($key !== false) && !$useNative) {
---
> /* added !isset($this->$key)) */
> if (($key !== false) && !$useNative && !isset($this->$key)) {
889c889
<
---
>
891c891,892
< if ($key && ($k == $key) && $useNative) {
---
> // if $v is set also continue..
> if ($key && ($k == $key) && $useNative && empty($this->$k)) {
894d894
<
969a970
> // if $this->key is not empty don't fill it (for innodb references)
971c972
< if ($key && $useNative) {
---
> if ($key && $useNative && !isset($this->$key)) {