を許可されていない、私は変数をクリックしたときに、私が見る唯一のものがある:例えば断続的な問題 - 「閉鎖」のシリアル化が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
コードは実際には動作しないものに置き換えます。以前のコードは動作していました。これはしません。
私は、この問題がQueryオブジェクトを作成し、他のQueryオブジェクトにキーを設定しようとするたびに突然起きると思われていますか?私は解決策を見つけたと思う
編集#3
。すべてのクエリでtoArray()
と呼ぶと、DebugKit
はエラーではなく実際の内容を表示します。
編集#2の私の疑惑は正しいと思います。それは、他のクロージャーに本質的にクロージャーを追加することは、DebugKit
が好きではなかったものでしたか?質問は、私が好きなようにどこでもtoArray()
を呼び出すことで間違って何かを請う?
エラーを受信するたびに、_full_ stacktrace **を含む** _complete_エラー**を必ず**投稿してください(問題が解決した場合でもログからコピーされることが理想的です) CakePHPに精通している人には明らかかもしれません!また、あなたの_exact_ CakePHPのバージョン( 'vendor/cakephp/cakephp/VERSION.txt'の最後の行)、そしてこの場合はデバッグキットのバージョン(' vendor/cakephp/debug_kit/VERSION.txt') – ndm
投稿されたエラーメッセージは、DebugKitで変数をクリックすると表示されるメッセージです。スタックトレースもありません。ページが適切にレンダリングされ、変数の内容が表示されず、そのメッセージが表示されます。 – TekiusFanatikus
通常、すべてのエラーはstacktraceと一緒にログに記録する必要があります。おそらく、デバッグキットが明示的にそれを呑み込むでしょう。いずれにしても、デバッグキットのバージョンは未知です。また、あなたの依存関係(CakePHPとデバッグキット)を最新のバージョンにアップグレードしてみてください( '3.3'ブランチの最新のCakePHPは' 3.3.15'、最新の互換デバッグキットバージョンは '3.9.3'です)。 。 – ndm