I have a problem with associations. I have two tables : Companies and Users.
User hasOne Company and Company belongsTo User (OneToOne)
In my models, I wrote :
/* User.php Model */
public $hasOne = array(
'Company' => array(
'className' => 'Company',
'dependent' => true
)
);
/* Company.php Model */
public $belongsTo = array(
'User' => array(
'className' => 'User',
'dependent' => true
)
);
My problem : when I do
$this->Company->delete($id, true)
in my CompaniesController, the Company with the id $id is deleted but the User associated is not.
Could you help me?
There is no 'dependent' option in
belongsTo
, so the only one actually working is the other way around.If you delete a User, it will delete it's Company.
Basically, deleting a parent can delete it's dependent children. But deleting a child can't delete it's "dependent" parent (since there's really no such thing in Cake's case of a "dependent parent").
More details here: http://book.cakephp.org/2.0/en/models/associations-linking-models-together.html
You could choose to run the association in both directions (requiring a field in each table to determine which it belongs to). That way, regardless of which you delete, it should always also delete the other.
Or, you could just delete the User that owns the company.