0

我正在尝试设计一个 PHP 项目的结构。我不太确定的是如何实现类别和产品关系。一个类别有一个父级,并且可以有多个子级。产品只属于一个类别。数据库表是这样的:

产品: id product_name category_id

类别 ID 类别名称 parent_id

我为产品创建了一个类,为类别创建了一个类。但我不知道以面向对象的方式将它们联系起来的最佳方法是什么。

我应该有更多像 CategoryManager 这样的类吗?如果是,它应该是什么样子?

任何人都有在代码级别而不是数据库级别实现关系的好方法。

提前致谢。

4

3 回答 3

3

在我看来,拥有类似Product->getCategory()和这样的方法Category->getProducts()就足够了。

于 2010-01-03T14:47:31.047 回答
1

我会这样做

一个产品可以有一个类别,但一个类别可以有多个产品。

class products 
{
  public $productname;
  public $price;

public function getProduct($id)
{
  return $this->db->fetch("select * from Products where id={$id}");
} 


}


class Category extends Products
{
  public $category;

  public function __construct()
 {
  parent::__construct();
 }

 public function getCategoryProduct($id)
 {
  $this->getProduct($id);
 }

}
于 2010-01-03T15:04:06.240 回答
0

这是我昨晚试图为我的论坛 -> 主题关系做的事情。过程式编程很容易。基本上你想要实现的是:

程序编程:

    function get_categories
    {
       //1. Perform database query for categories
       $sql_categories = "SELECT * FROM categories ORDER BY category_id ASC";
       $res_categories = mysqli_query($conn, $sql_categories);
       //2. Return result
       return $res_categories_classic; 
    }

    function get_products
    {
       //3. Get the returned data from the categories query
       $res_categories = get_categories();
       while ($array_categories = mysqli_fetch_assoc($res_categories))
       {
            //4. Perform database query for products
            $sql_forums = "SELECT * FROM products WHERE product_id = {$array_categories["category_id"]}";
            $res_forums = mysqli_query($conn, $sql_forums);
            //5. Display returned data from products
       }
    }

现在在 OOP PHP 中,如果你使用一个框架,这将取决于框架,但一般来说:

        //1. Get all the Categories
        public function get_categories()
        {
           $this->db->select('*');
           $this->db->from('categories');
           $this->db->order_by('category_id', 'asc');
           $query = $this->db->get();
           return $query->result_array();
        {

        //2. Get all the related products
        public function get_products($category_id)
        {
           $products = $this->db->fetch("select * from Products where product_id={$category_id}");
           return $products;
        } 

Category_ID可以通过URL作为参数提供,方法是单击类别的href,基本上使用框架,这将是小菜一碟,因为您已经设置了简单的路由。Vanilla 是一样的,但看起来像这个 website/categories.php?类别=1

于 2017-12-29T11:57:52.097 回答