使用映射器模式时,如何为多对多关系定义类的最佳实践是什么。
例如,假设我们有产品和类别以及产品_类别的表格。
以下是产品和类别的基本骨架。每个都有一个对象类和一个映射器。
产品对象和产品映射器:
这里缺少的是将产品添加到类别中,更新/删除/选择来自类别的产品等功能。是否可以在Product_Mapper中创建一个名为addCategory、deleteCategory、getProductsByCategoryId的方法,或者创建一个名为Product_Categories的新对象处理这些功能?非常感谢任何反馈。我认为两种方法都适用,但如果不创建新类,随着建立新关系,我也可以看到产品类变得臃肿。
例如,假设我们有产品和类别以及产品_类别的表格。
以下是产品和类别的基本骨架。每个都有一个对象类和一个映射器。
产品对象和产品映射器:
class Product
{
public $product_id;
public $name;
public function __construct($product_id = false, $name = false)
{
$this->product_id = $product_id;
$this->name = $name;
}
}
class Product_Mapper
{
private $_db;
public function __construct($_db) {}
public function getProducts() {}
public function getProductById($product_id) {}
public function insert(Product $product) {}
public function save(Product $product) {}
public function update(Product $product) {}
public function delete(Product $product) {}
}
分类对象和分类映射器
class Category
{
public $category_id;
public $name;
public function __construct($category_id = false, $name = false)
{
$this->category_id = $category_id;
$this->name = $name;
}
}
class Category_Mapper
{
private $_db;
public function __construct($_db) {}
public function getCategories() {}
public function getCategoryById($product_id) {}
public function insert(Category $category) {}
public function save(Category $category) {}
public function update(Category $category) {}
public function delete(Category $category) {}
}
这里缺少的是将产品添加到类别中,更新/删除/选择来自类别的产品等功能。是否可以在Product_Mapper中创建一个名为addCategory、deleteCategory、getProductsByCategoryId的方法,或者创建一个名为Product_Categories的新对象处理这些功能?非常感谢任何反馈。我认为两种方法都适用,但如果不创建新类,随着建立新关系,我也可以看到产品类变得臃肿。