我正在尝试设计PHP项目的结构。我不太确定的是如何实现类别和产品的关系。一个类别有一个父类,可以有很多孩子。产品只属于一个类别。 Db表是这样的:
产品: id product_name category_id
类别 id category_name parent_id
我为产品创建了一个类,一个类的类。但我不知道以面向对象的方式将它们联系起来的最佳方式是什么。
我应该有更多像CategoryManager这样的类,如果是的话应该是什么样的?
任何人都有很好的方法来实现代码级别的关系,而不是在数据库级别。
提前致谢。
答案 0 :(得分:3)
在我看来,使用Product->getCategory()
和Category->getProducts()
等方法就足够了。
答案 1 :(得分: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);
}
}
答案 2 :(得分: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;
}
通过点击类别的 href ,可以通过网址作为参数提供 Category_ID ,基本上一个框架,它将是一块蛋糕,因为你已经建立了简单的路由。香草会是一样的,但看起来像这个网站/ categories.php? category = 1