我正忙着用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等。
答案 0 :(得分:0)
目前没有MongoDB数据源,它以CakePHP中您期望的方式处理模型关联。首先,NoSQL数据库在概念上不是为此而制造的,其次,CakePHP 1.x模型/数据源架构使得实现这种多样化的数据库技术变得非常困难。
但是,您可以查看Lithium框架。他们已经将MongoDB的完全“关系”支持实施到他们的模型架构中。