Cakephp 查询生成器出现间歇性问题-序列化';关闭';不允许

Cakephp 查询生成器出现间歇性问题-序列化';关闭';不允许,cakephp,cakephp-3.0,Cakephp,Cakephp 3.0,在DebugKit中,当我单击变量时,唯一看到的是: Serialization of 'Closure' is not allowed 例如,myindex函数的整个代码: $data = $this->Seasons->find() ->where(['Seasons.user_id' => $this->Auth->user('id')]); foreach($data as $season){ $s = $season->id;

在DebugKit中,当我单击变量时,唯一看到的是:

Serialization of 'Closure' is not allowed
例如,my
index
函数的整个代码:

$data = $this->Seasons->find()
->where(['Seasons.user_id' => $this->Auth->user('id')]);

foreach($data as $season){
    $s = $season->id;

    $leagues = $this->Leagues->find()->innerJoinWith('Games', function ($q) use($s) {
            return $q->where(['Games.season_id' => $s]);
        }
    )
    ->where(['Leagues.user_id' => $this->Auth->user('id')])
    ->distinct(['Leagues.name'])
    ->order(['Leagues.name']);

    foreach($leagues as $league){
        $l = $league->id;

        $gametypes = $this->GameTypes->find()->innerJoinWith('Games', function ($q) use($s, $l) {
            return $q->where([
                    'Games.season_id' => $s,
                    'Games.league_id' => $l 
                ]);
            }
        )
        ->distinct(['GameTypes.sort_order'])
        ->order(['GameTypes.sort_order']);

        //set values to data
        $league["game_types"] = $gametypes;

    }
    //set values to data
    $season['leagues'] = $leagues;
}

$this->set(compact('data'));
对我来说,这是一个断断续续的问题。在某些情况下,我可以很好地看到DebugKit的变量,而在其他情况下则会出现此错误,我必须使用
debug()
查看变量的内容

编辑#1

蛋糕版:“3.3.10”

编辑#2

代码被实际不起作用的代码替换。事实证明,以前的代码是有效的。这个,不是

我开始怀疑,每当我试图构建查询对象并用其他查询对象填充键时,就会出现这个问题

编辑#3

我想我找到了解决办法。如果我在所有查询中调用
toArray()
DebugKit
将显示实际内容,而不是错误


我认为我对《编辑2》的怀疑是对的。在另一个闭包中附加本质上是闭包的东西是
DebugKit
不喜欢的?问题是,像我这样到处调用
toArray()
有什么问题吗?

我必须在所有查询中调用
toArray()

每当收到错误时,请始终发布完整的错误,也就是说,包括完整的堆栈跟踪(最好是从日志中以正确可读的方式复制),即使这个问题对于熟悉CakePHP的人来说是显而易见的!另外,请始终提及您的确切CakePHP版本(在
vendor/CakePHP/CakePHP/version.txt
中的最后一行),在这种情况下,也请提及调试工具包版本(
vendor/CakePHP/debug_kit/version.txt
)-谢谢!发布的错误消息是我在DebugKit中单击变量时看到的。也没有堆栈跟踪。页面呈现正确,我只是看不到变量的内容,它会显示该消息。通常每个错误都应该与stacktrace一起记录。。。也许调试工具包明确地吞下了它。在任何情况下,您的调试工具包版本仍然未知。还可以尝试将您的依赖项(CakePHP以及调试工具包)升级到最新版本(
3.3
分支中的最新CakePHP是
3.3.15
,最新兼容的调试工具包版本是
3.9.3
),我想我找到了解决方案。。。需要到处调用toArray()。。。