Symfony: Control Model->save() function to perform INSERT or UPDATE
In Symfony Framework, Model->save() function is clever enough to determine to use INSERT or UPDATE for the query. But i’ve tried many ways to perform an UPDATE for my record but failed. It keep INSERT new record. Finally i found the solution to control the Model->save() function to perform INSERT or UPDATE.
Just a simple example:-
Assume there is a User table where ID is the primary key, and there is a user record with id = 5, now we perform the code below, it should be smart enough to perform UPDATE but NO!, the code below will INSERT a new record.
$user_id = 5;
$status = 1;$user = new User();
$user->setId($user_id);
$user->setStatus($status);
$user->save(); // this will insert instead of update
Solution:
$user_id = 5;
$status = 1;$user = new User();
$user->setNew(false); // u need to add this line
$user->setId($user_id);
$user->setStatus($status);
$user->save(); // now it will perform a UPDATE query
Posted at April 4th, 2008 by chua
If you think this article helps you to solve your problem and clear your headache, feel free to buy me a drink :)









April 15th, 2008 at 4:54 pm
Very, very helpful! Thank you!
June 25th, 2008 at 4:16 am
nice !
thx a lot dude, I waisted about 2 hours on this issue before reading your tips.