2017-03-19 23 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

代碼的東西,其實不工作更換。事實證明,以前的代碼工作正常。這不,

我開始懷疑,當我試圖構建查詢對象並使用其他查詢對象填充鍵時,此問題會突然出現?

編輯#3

我想我找到了解決辦法。如果我在所有查詢中調用toArray()DebugKit將顯示實際內容,而不是錯誤。

我認爲編輯#2中的懷疑是正確的。那麼,在其他Closure中追加什麼是閉包?DebugKit不喜歡什麼?這個問題乞討,像我一樣在任何地方打電話toArray()有什麼不妥?

+0

無論什麼時候收到錯誤,請始終發佈** _complete_錯誤**,即**包括_full_ stacktrace **(理想情況下從日誌中以可正常讀取的方式複製),即使問題對熟悉CakePHP的人來說可能很明顯!也請提及你的_exact_ CakePHP版本('vendor/cakephp/cakephp/VERSION.txt'中的最後一行),在這種情況下還需要提供調試套件版本('vendor/cakephp/debug_kit/VERSION.txt') - 謝謝! – ndm

+0

發佈的錯誤消息是我在DebugKit中單擊變量時看到的內容。沒有堆棧跟蹤。頁面呈現正確,我只是看不到變量的內容,並顯示該消息。 – TekiusFanatikus

+0

通常,每個錯誤都應該與堆棧跟蹤一起記錄......也許調試工具包明確地吞下它。無論如何,您的調試套件版本仍是未知數。也可以嘗試將它的依賴項(CakePHP以及調試工具包)升級到最新版本(3.3.3分支中的最新CakePHP爲3.3.15,最新兼容的調試工具包版本爲3.9.3) 。 – ndm

回答

相關問題