Comment l'Undindmodel arrive-t-il dans le gâteau?
$this->User->unbindModel(array('hasAndBelongsToMany' => array('Friend'))); $user = $this->paginate("User", array("User.first_name LIKE" => $user["User"]["first_name"]));
3 Réponses :
Dans le manuel : < / p>
Suppression ou ajout d'associations à l'aide de BIND- et UNBINDMODEL () ne fonctionne que pour
la prochaine opération de modèle forte> sauf si le deuxième paramètre n'a été défini sur false code>. Si le deuxième paramètre a été défini sur
false code>, la liaison reste en place pour le reste de la requête. P> blockQuote>
En d'autres termes, après que vous
paginate () code> ou
trouve () code> ou faites autre chose avec le modèle, le débrouillage sera inversé. P>
Dans ce cas, c'est une bonne pratique d'engourner comme ça ?? nonset ($ this-> user-> hasandbelongstomany ["ami]) code>
@Rsk qui ne ferait que rien ou ne casserait des choses horriblement. Je ne voudrais pas essayer de toute façon.
Stackoverflow.com/ Questions / 3707859 / ... peut-on répondre pour cela
@Rsk Non, parce que je ne vois aucun besoin de valider les informations de connexion. Le login est correct ou ce n'est pas le cas, donner plus de détails ne permet que des attaquants potentiels. J'ai écrit à ce sujet ici avant quelque part, mais je ne peux pas le trouver maintenant.
Pour les futurs visiteurs, cela ne devrait pas être la réponse acceptée - le paginate () code> fonctionne deux fois à deux reprises (comme indique DarkCode indique ci-dessous, une fois pour récupérer les données, et une fois pour récupérer le compte) afin que vous puissiez obtiendra des résultats très étranges en appelant
paginate () code> après un
Unbindmodel () code> sans l'option persist définie sur
true code>.
Eh bien, dans mon expérience avec des incrédues, je peux dire que le paginate fait toujours 2 requête une pour compter le total et le second pour le graphique de résultat
Ungind Détruisez une fois la relation et votre âge dont vous avez besoin d'étendre cette règle pour détruire Deux fois ou plus, vous devez donc définir VRAI, je suppose que cela persiste cette règle: p>
Essayez ceci:
$this->Leader->find('all'); // Let's remove the hasMany... $this->Leader->unbindModel( array('hasMany' => array('Follower')) ); // Now using a find function will return // Leaders, with no Followers $this->Leader->find('all'); // NOTE: unbindModel only affects the very next // find function. An additional find call will use // the configured association information. // We've already used find('all') after unbindModel(), // so this will fetch Leaders with associated // Followers once again... $this->Leader->find('all');