У меня есть следующие запросы
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. Ничего из этого не работает.
search
? Можете ли вы опубликовать код об этом? Почему вы не используете типичные методы CakePHP 2.x для поиска таблиц? - person arilia   schedule 02.10.2013query
я пришел к выводу, что запрос кешируется. Я не использую типичные методы CakePHP 2.x для CRUD, потому что они не полностью удовлетворяют сложные потребности приложения, которое я создаю, поскольку мне нужно больше настроек в запросах, чем предоставляет CakePHP 2.x. - person SobiborTreblinka   schedule 02.10.2013