Delete belongsTo association not working

1.6k views Asked by At

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?

1

There are 1 answers

1
Dave On BEST ANSWER

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.