Как 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 каждый запрос? или он отключается во время всего вызова функции?
Из руководства :
Удаление или добавление ассоциаций с помощью 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');