0
在DebugKit,當我點擊變量,我唯一看到的是:與查詢生成器間歇性問題 - 「封閉」的序列化是不允許
Serialization of 'Closure' is not allowed
例如,我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中的懷疑是正確的。那麼,在其他Closure中追加什麼是閉包?DebugKit
不喜歡什麼?這個問題乞討,像我一樣在任何地方打電話toArray()
有什麼不妥?
無論什麼時候收到錯誤,請始終發佈** _complete_錯誤**,即**包括_full_ stacktrace **(理想情況下從日誌中以可正常讀取的方式複製),即使問題對熟悉CakePHP的人來說可能很明顯!也請提及你的_exact_ CakePHP版本('vendor/cakephp/cakephp/VERSION.txt'中的最後一行),在這種情況下還需要提供調試套件版本('vendor/cakephp/debug_kit/VERSION.txt') - 謝謝! – ndm
發佈的錯誤消息是我在DebugKit中單擊變量時看到的內容。沒有堆棧跟蹤。頁面呈現正確,我只是看不到變量的內容,並顯示該消息。 – TekiusFanatikus
通常,每個錯誤都應該與堆棧跟蹤一起記錄......也許調試工具包明確地吞下它。無論如何,您的調試套件版本仍是未知數。也可以嘗試將它的依賴項(CakePHP以及調試工具包)升級到最新版本(3.3.3分支中的最新CakePHP爲3.3.15,最新兼容的調試工具包版本爲3.9.3) 。 – ndm