Я занят тестированием моделей с 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,
)
);
}
Рецепт имеет много тегов и наоборот, но как мне правильно это представить, чтобы он корректно отображался с MongoDB через ассоциации CakePHP, поскольку модель HABTM и т. Д. Ретранслирует традиционные реляционные данные SQL?
Кроме того, как мне обеспечить правильное управление отношениями, когда мы либо удаляем рецепт, либо удаляем тег?
Я подозреваю, что мне придется создать поведение для управления отношениями.IE имеет hasReference и isReferenced так же, как hasOne, hasAndBelongsToMany и т. Д.