2017-03-19 18 views
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

コードは実際には動作しないものに置き換えます。以前のコードは動作していました。これはしません。

私は、この問題がQueryオブジェクトを作成し、他のQueryオブジェクトにキーを設定しようとするたびに突然起きると思われていますか?私は解決策を見つけたと思う

編集#3

。すべてのクエリでtoArray()と呼ぶと、DebugKitはエラーではなく実際の内容を表示します。

編集#2の私の疑惑は正しいと思います。それは、他のクロージャーに本質的にクロージャーを追加することは、DebugKitが好きではなかったものでしたか?質問は、私が好きなようにどこでもtoArray()を呼び出すことで間違って何かを請う?

+0

エラーを受信するたびに、_full_ stacktrace **を含む** _complete_エラー**を必ず**投稿してください(問題が解決した場合でもログからコピーされることが理想的です) CakePHPに精通している人には明らかかもしれません!また、あなたの_exact_ CakePHPのバージョン( 'vendor/cakephp/cakephp/VERSION.txt'の最後の行)、そしてこの場合はデバッグキットのバージョン(' vendor/cakephp/debug_kit/VERSION.txt') – ndm

+0

投稿されたエラーメッセージは、DebugKitで変数をクリックすると表示されるメッセージです。スタックトレースもありません。ページが適切にレンダリングされ、変数の内容が表示されず、そのメッセージが表示されます。 – TekiusFanatikus

+0

通常、すべてのエラーはstacktraceと一緒にログに記録する必要があります。おそらく、デバッグキットが明示的にそれを呑み込むでしょう。いずれにしても、デバッグキットのバージョンは未知です。また、あなたの依存関係(CakePHPとデバッグキット)を最新のバージョンにアップグレードしてみてください( '3.3'ブランチの最新のCakePHPは' 3.3.15'、最新の互換デバッグキットバージョンは '3.9.3'です)。 。 – ndm

答えて

0

すべてのクエリでtoArray()を呼び出す必要がありました。

関連する問題