unbindModel вызов в CakePhp. Как это работает?

Как unbindModel происходит в пироге?

$this->User->unbindModel(array('hasAndBelongsToMany' => array('Friend'))); 

Я написал это в начале функции. Но все же он запрашивает модель «Друг». Был вызов paginate () в середине функции. Поэтому я подумал, что paginator может генерировать запросы.

Я добавил вызов unbindModel перед paginate, и теперь он работает.

 $this->User->unbindModel(array('hasAndBelongsToMany' => array('Friend'))); $user = $this->paginate("User", array("User.first_name LIKE" => $user["User"]["first_name"])); 

Разблокирует unbindModel каждый запрос? или он отключается во время всего вызова функции?

Solutions Collecting From Web of "unbindModel вызов в CakePhp. Как это работает?"

Из руководства :

Удаление или добавление ассоциаций с помощью bind- и unbindModel () работает только для следующей операции модели, если для второго параметра не установлено значение false . Если для второго параметра установлено значение false , привязка остается на месте для остальной части запроса.

Другими словами, после того, как вы paginate() или find() или сделаете что-нибудь еще с моделью, развязка будет отменена.

Ну, по моему опыту с развязками я могу сказать, что Paginate всегда делает 2 запроса один для подсчета общего числа, а второй для массива результатов

unbind уничтожить только один раз отношение, и вам нужно расширить это правило, чтобы уничтожить два или более раза, поэтому вам нужно установить TRUE, я думаю, чтобы сохранить это правило:

 $this->User->unbindModel(array('hasAndBelongsToMany' => array('Friend')), true); 

Попробуй это:

 $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');