Details
-
Type:
Bug
-
Status:
Closed
-
Priority:
Major
-
Resolution: Fixed
-
Affects Version/s: 1.1.5
-
Fix Version/s: 1.2.0-RC1
-
Component/s: None
-
Labels:None
-
Environment:Mac OS X, PHP 5.2.11, MySQL 5.1.37
Description
When one-to-one relationship is used and a refreshRelated is performed after a delete a new record is inserted with NULL values.
schema.yml
Email:
columns:
user_id: integer
address: string(150)
relations:
User:
local: user_id
foreign: id
type: one
foreignType: one
foreignAlias: email
User:
columns:
name: string(150)
Sample code
Create.php - create the user/email
$u = new User();
$u->name = 'Test';
$u->email->address = 'foo@bar.com';
$u->save();
Delete.php - remove the email
$u = Doctrine_Query::create()>from('User')>fetchOne();
$u->name = 'Test2' ;
$u->email->delete();
$u->refreshRelated('email');
$u->save();
The profile (of Delete.php)
connect 0.005211
query 0.000493
SELECT u.id AS u_id, u.name AS u_name FROM user u
prepare 0.000028
SELECT e.id AS e_id, e.user_id AS euser_id, e.address AS e_address FROM email e WHERE e.user_id = ?
execute 0.001086
SELECT e.id AS e_id, e.user_id AS euser_id, e.address AS e_address FROM email e WHERE e.user_id = ?
Array
(
[0] => 1
)
Total time: 0.00681829452515
fetch 0.000024
SELECT e.id AS e_id, e.user_id AS euser_id, e.address AS e_address FROM email e WHERE e.user_id = ?
fetch 0.000016
SELECT e.id AS e_id, e.user_id AS euser_id, e.address AS e_address FROM email e WHERE e.user_id = ?
begin 0.000147
prepare 0.000019
DELETE FROM email WHERE id = ?
execute 0.000253
DELETE FROM email WHERE id = ?
Array
(
[0] => 1
)
Total time: 0.00727772712708
commit 0.001120
prepare 0.000021
SELECT e.id AS e_id, e.user_id AS euser_id, e.address AS e_address FROM email e WHERE e.user_id = ?
execute 0.000333
SELECT e.id AS e_id, e.user_id AS euser_id, e.address AS e_address FROM email e WHERE e.user_id = ?
Array
(
[0] => 1
)
Total time: 0.0087513923645
fetch 0.000017
SELECT e.id AS e_id, e.user_id AS euser_id, e.address AS e_address FROM email e WHERE e.user_id = ?
begin 0.000104
prepare 0.000020
UPDATE user SET name = ? WHERE id = ?
execute 0.000291
UPDATE user SET name = ? WHERE id = ?
Array
(
[0] => Test2
[1] => 1
)
Total time: 0.00918316841125
prepare 0.000021
INSERT INTO email (id, user_id, address) VALUES (?, ?, ?)
execute 0.000193
INSERT INTO email (id, user_id, address) VALUES (?, ?, ?)
Array
(
[0] =>
[1] =>
[2] =>
)
Total time: 0.00939726829529
commit 0.000823
a var_dump of $u->toArray() after refreshRelated shows
array(3) {
["id"]=>
string(1) "1"
["name"]=>
string(7) "Test2"
["email"]=>
array(3)
}
And in the database I have null values for the email record.
This does not happen if I change the relationship to hasMany
This should be fixed in 1.2 now. Can you test 1.2?