2011-07-19 17 views
1

MongoDBでモデルをテストしています。私は2つのモデル:レシピと タグを持っています。 MongoDBとのCakePHPモデルの関連付けを正しく作成しました

 
class Recipe extends AppModel { 
    var $name = 'Recipe'; 
     var $mongoSchema = array( 
       'name' => array('type' => 'string'), 
       'description' => array('type' => 'string'), 
       'tags' => array('type' => 'array'), //the tags "tag" value 
       'created' => array('type' => 'datetime'), 
       'modified' => array('type' => 'datetime'), 
     ); 
    var $hasAndBelongsToMany = array( 
     'Tag' => 
      array( 
       'className'    => 'Tag', 
       'joinTable'    => 'recipe', 
       'foreignKey'    => '_id', 
       'associationForeignKey' => 'tags', 
       'unique'     => true, 
      ) 
    ); 
} 
class Tag extends AppModel { 
    var $name = 'Tag'; 
     var $mongoSchema = array( 
       'tag' => array('type' => 'string'), 
       'description' => array('type' => 'string'), 
       'created' => array('type' => 'datetime'), 
       'modified' => array('type' => 'datetime'), 
     ); 
    var $hasAndBelongsToMany = array( 
     'Recipe' => 
      array( 
       'className'    => 'Recipe', 
       'joinTable'    => 'recipe', 
       'foreignKey'    => 'tags', 
       'associationForeignKey' => '_id', 
       'unique'     => true, 
      ) 
    ); 
} 

レシピは、多くのタグとヴィーカのその逆を持っていますが、それはモデルHABTMなどが伝統的なSQLリレーショナルデータに中継するようCakePHPの団体を経由してのMongoDBと正しくマッピングされるようにどのように私は正しくこの を表しているのですか?

さらに、レシピを削除するかタグを削除するときに、関係が正しく管理されるようにするにはどうすればよいですか?

私は関係を管理するための動作を作成する必要があると思われます。 I. hasReferenceとhasReferencedはhasOne、hasAndBelongsToManyなどと同じです。

+1

https://github.com/lorenzo/MongoCake –

答えて

0

現在、MongoDBのデータソースはありません.MongoDBのデータソースは、CakePHPで期待する方法で処理します。 1つ目は、NoSQLデータベースが概念的に作られていないことです.2つ目は、CakePHP 1.xモデル/データソースアーキテクチャーは、このような多様なデータベース技術を実装することを非常に困難にしています。

ただし、Lithiumフレームワークをご覧ください。 MongoDBのモデルアーキテクチャへの完全な「リレーショナル」サポートを実装しました。

+0

CakephpのMongoDBデータソースをチェックする価値があります:https://github.com/ichikaway/cakephp-mongodb – givanse

関連する問題