Полностью удалить кэш запросов из CakePHP 2.x

У меня есть следующие запросы

 public function test()
 {
    $uuid = substr( String::uuid() , 4 , rand( 7 , 10 ) );
    $name = $uuid;

    $event = $this->Event->getEvent( array( "event_id" => "5240e695-9acc-4e32-9b98-1aecb3d0838" ) );
    $event[ "event_name" ] = $name;

    $this->Event->update( $event );

    debug( $this->Event->search( array( "event_id" => $event[ "event_id"] ) )[ 0 ][ "event_name" ] );

    debug( $this->Event->search( array( "event_id" => $event[ "event_id"] , "limit" => 1 ) )[ 0 ][ "event_name" ] );
}

Я назначаю случайное имя конкретному событию, полученному из таблицы mySQL ( InnoDB ) event, назначаю ему случайное новое имя и сохраняю его обратно в базу данных.

Когда я запускаю последние два оператора в этом коде, результаты не совпадают, обратите внимание, что последний параметр во втором запросе просто добавляет LIMIT 1 в конец второго запроса. (Я не использую типичные методы CakePHP 2.x для поиска таблиц). Результат 1-го поискового вызова даст предыдущий результат предыдущего запроса, а 2-й поисковый вызов даст фактическое обновленное в настоящее время имя в таблице event.

Я искал повсюду, как удалить кэширование запросов ПОЛНОСТЬЮ из объектов источника данных, но не могу понять, как это сделать. Я пытался использовать flushMethodCache() для объекта источника данных, но он ничего не делает, я пытался установить

$cacheQueries = false, $cacheSources = false;

в AppModel, но это тоже ничего не делает. Я пробовал искать в /App/Config/Core.php и отключать кэширование, а также устанавливать время кэширования равным 0. Ничего из этого не работает.


person SobiborTreblinka    schedule 02.10.2013    source источник
comment
что делают функции search? Можете ли вы опубликовать код об этом? Почему вы не используете типичные методы CakePHP 2.x для поиска таблиц?   -  person arilia    schedule 02.10.2013
comment
По соображениям безопасности я не могу опубликовать внутренности фреймворка, но могу опубликовать две строки запроса, которые выполняются этими двумя вызовами функций. pastebin.com/YTFskNPF Всякий раз, когда первый запрос изменяется, но возвращает эквивалентные результаты, запрос возвращает ПРЕДЫДУЩИЕ результаты, называемые по модели событий в функции query я пришел к выводу, что запрос кешируется. Я не использую типичные методы CakePHP 2.x для CRUD, потому что они не полностью удовлетворяют сложные потребности приложения, которое я создаю, поскольку мне нужно больше настроек в запросах, чем предоставляет CakePHP 2.x.   -  person SobiborTreblinka    schedule 02.10.2013


Ответы (1)


Выяснил проблему:

Вместо того, чтобы звонить

$model->query( $string );

мне нужно было позвонить

$model->query( $string, false );

person SobiborTreblinka    schedule 05.10.2013
comment
Документация - person ; 25.10.2013