CakePHP has the default of unique set to true, I’ve coded it just to make sure as well.
So I have the following DB structure:
Item HABTM Action, with unique set to true.
The situation is as followed:
Deletion works fine upon save when I delete 1 or more records, if ATLEAST 1 record stays ‘alive’
Deletion doesn’t work upon save when I delete all records ( or 1 record, if that’s the only one). It simply keeps all existing records that way.
I’ve made sure with debug($this->request->data) right before save that it contained Nothing of Action.
From the discussion in the comments on your post I am still confused, but what I understand is that you’re trying to:
Save a POST in a format similar to this:
array(
‘Item’ => array(
‘id’ => ‘3’
)
With:
Your POST should contain a ‘Action’ key:
When the “Action” key is set, Cake knows that it has to go “over” the relation and to it’s magic.
Then it will delete.
I just tested this on a App that I’m developing and actually found it to be a bug. 😀 The problem
was that for the specific HATBM relation I had to use manually generated forms and thus when posting with nothing included the relation key was not set and the records, weren’t deleted. I suppose that the Form Helper deals with this.
If you have a similar problem you can manage this in two different manners:
Put a hidden input with JavaScript
In the Controller check if the ‘Action’ key is set, and if not add it (as an empty array):
$this->request->data[‘Action’][‘Action’] = array();
This may be kind of intrusive, but It’ll do the job.