我发生以下查询
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的典型方法搜索表)。第一个搜索调用的结果将产生前一个请求的前一个结果,而第二个搜索调用的结果将在event
表中产生当前实际更新的名称。
我一直在寻找如何从数据源对象中完全删除查询缓存的方法,但一直想不通。我尝试在数据源对象上使用flushMethodCache(),但是它什么也没做,我尝试设置
$cacheQueries = false, $cacheSources = false;
在AppModel中,但这也不起作用。我尝试在/App/Config/Core.php中查找并禁用缓存,并将缓存时间设置为0。这些都不起作用。
发现问题:
而不是打电话
$model->query( $string );
我需要打电话
$model->query( $string, false );
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句