3

次のクエリが発生しています

 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ランダムな名前を割り当て、それにランダムな新しい名前を割り当てて、データベースに保存します。

このコードの最後の 2 つのステートメントを実行すると、結果は同じではありません。2 番目のクエリの最後のパラメーターは、2 番目のクエリの末尾に LIMIT 1 を追加するだけであることに注意してください。(テーブルを検索するための CakePHP 2.x の一般的な方法は使用していません)。最初の検索呼び出しの結果は前の要求からの前の結果を生成し、2 番目の検索呼び出しはテーブル内で現在更新されている実際の名前を生成しeventます。

データソース オブジェクトからクエリ キャッシュを完全に削除する方法を高低で検索してきましたが、その方法がわかりません。データソース オブジェクトで flushMethodCache() を使用しようとしましたが、何もしません。設定しようとしました

$cacheQueries = false, $cacheSources = false;

AppModel で、しかしそれも何もしません。/App/Config/Core.php を調べて、キャッシュを無効にし、キャッシュ時間を 0 に設定しようとしましたが、どれも機能しません。

4

1 に答える 1

12

問題を発見しました:

呼び出す代わりに

$model->query( $string );

私は電話する必要がありました

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

于 2013-10-05T02:22:08.633 に答える