При использовании шаблона сопоставления, что является наилучшей практикой для определения классов для отношений "многие ко многим".
Например, допустим, у нас есть таблицы для продуктов и категорий и категорий_категорий
Здесьнекоторые основные скелеты для продуктов и категорий.У каждого есть класс объекта, и у каждого есть Mapper.
Объект Product & Product Mapper:
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) {}
}
Категория Object и Category Mapper
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
, который будет обрабатывать эти функции?
Действительно благодарны за любые отзывы.Я мог видеть, что любой из этих подходов подходит, но не создав новый класс, я также мог видеть, как класс продукта раздут, когда строятся новые отношения.