2012-02-07 8 views
0

多くのアバターとエージェントを持つゲームモデルがあります。私はゲームを削除すると、私は残りのすべてのデータをクリーンアップしたいので、私はまた、対応するgame_idですべてのアバターやエージェントを削除する:Lithium:モデルのフィルタを削除して関連する文書を削除します。

namespace app\models; 

use app\models\Avatars; 
use app\models\Agents; 

class Games extends \lithium\data\Model 
{ 
    public static function __init($options = array()) { 
     parent::__init($options); 
     $self = static::_instance(__CLASS__); 

     Games::applyFilter('remove', function($self, $params, $chain) { 

      $conditions = array('game_id' => $params['conditions']['_id']); 

      $message = new \app\extensions\helper\Message(); 
      $debugString = var_export($conditions, true); 
      $message->addDebugMessage("params:{$debugString}"); 
      //Output: 
      //params:array ('game_id' => '4f301f69a170c8cf52000002',) 


      if(!Agents::remove($conditions)) { $message->addErrorMessage('Es konnten nicht alle Agents geloescht werden.'); }; 
      if(!Avatars::remove($conditions)) { $message->addErrorMessage('Es konnten nicht alle Avatare geloescht werden.'); }; 

      return $chain->next($self, $params, $chain); 
     }); 

    } 
} 

ゲームが削除されるものの、エージェントとアバターが中に残っていますMongoDB。 誰かがこれに関するヒントを持っていますか?

デシベル

>db.agents.find() 
{ "_id" : ObjectId("4f301f71a170c8391f000000"), "game_id" : ObjectId("4f301f69a170c8cf52000002"), "type" : "army", "subtype" : "deer", "units" : 5, "xPos" : 5, "yPos" : 5 } 

答えて

3

におけるエージェントの例私が見ていると思いますが、私はremove()が値をキャストとは思いません。あなたがする必要があるでしょう:

$conditions = array('game_id' => new MongoId($params['conditions']['_id'])); 
+0

THXネイト、私はそれを見ています – Tomen

+0

はい、私は有効な解決策として、これを確認することができます。ありがとう=) – Tomen

関連する問題