Как 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');