2010-12-07 26 views
1

J'ai un modèle model1 qui a beaucoup model2. Comment puis-je supprimer tous les model2s d'un model1 spécifique, par exemple. celui avec ID 1234? Cela signifie, en SQL,CakePHP: comment supprimer haveMany associations avec saveAll

UPDATE 
    model2 
SET 
    model1_id=NULL 
WHERE 
    model1_id=1234; 

Mais comment formuler ceci le chemin CakePHP? J'ai essayé model1->saveAll avec le tableau suivant comme argument:

Array 
(
[Model1] => Array 
    (
     [id] => 1234 
    ) 

[Model2] => Array 
    (
    ) 
) 

Ce qui signifie, Model2 simplement mis à un tableau vide. Mais ça ne marche pas. Maintenant, comment puis-je "désassocier" des objets2 qui appartiennent à un autre objet spécifique1 dans une relation hasMany (vue depuis object1 side)?

+0

juste pour clarifier, vous voulez annuler ces model1_id pointant vers model2? –

+0

@andreas non, le point 'model1_id's de la table' model2' à la table 'model1'. Et oui, je veux les annuler. – joni

Répondre

2

Essayez d'utiliser updateAll($fields, $conditions)

$this->Model2->updateAll(array('model1_id' => null), array('model1_id' => 1234)); 

Voici le CakePHPDocs à ce sujet.

+0

Merci, cela fonctionne, mais savez-vous s'il y a une approche plus élégante/plus semblable à CakePHPway? – joni

+0

Erh c'est la façon cakephp ... Voir les Docs –