正确创建与MongoDB的CakePHP模型关联

时间:2011-07-19 12:13:42

标签: php cakephp models mongodb

我正忙着用MongoDB测试模型。我有两个型号:配方和 标签。

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, 
            ) 
    ); 
} 

Recipe有许多标签,反之亦然,但我如何正确表示 这样它可以通过CakePHP关联正确地映射MongoDB作为传统SQL关系数据的Model HABTM等中继吗?

此外,我如何确保管理关系 我们删除食谱或删除标签时是否正确?

我怀疑我必须创建一种管理关系的行为。 I.E.一个hasReference和isReferenced很像hasOne,hasAndBelongsToMany等。

1 个答案:

答案 0 :(得分:0)

目前没有MongoDB数据源,它以CakePHP中您期望的方式处理模型关联。首先,NoSQL数据库在概念上不是为此而制造的,其次,CakePHP 1.x模型/数据源架构使得实现这种多样化的数据库技术变得非常困难。

但是,您可以查看Lithium框架。他们已经将MongoDB的完全“关系”支持实施到他们的模型架构中。