多对多关系(在详细信息产品页面中显示评论)

时间:2019-03-25 10:51:03

标签: mysql database

我有3个表格,分别是产品,用户和评论。我使用的关系是多对多。我的sql代码如下:

CREATE TABLE users (
    id INT UNSIGNED AUTO_INCREMENT,
    email VARCHAR(255) NOT NULL,
    password VARCHAR(255) NOT NULL,
    fullname VARCHAR(255) NOT NULL,
    phone VARCHAR(11) ,
    address TINYTEXT,
    create_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    update_at DATETIME,
    PRIMARY KEY(id)
);

CREATE TABLE products (
    id INT UNSIGNED AUTO_INCREMENT,
    name VARCHAR(255) NOT NULL,
    image TINYTEXT NOT NULL,
    priceold DECIMAL(5,1) NOT NULL,
    pricenew DECIMAL(5,1) NOT NULL,
    code VARCHAR(20) NOT NULL,
    description TINYTEXT ,
    link_origin TINYTEXT,
    date_release DATE,         
    developer VARCHAR(255),
    link_trailer TINYTEXT,
    create_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    update_at DATETIME,
    PRIMARY KEY(id)

);

CREATE TABLE reviews(

    user_id INT UNSIGNED ,
    product_id INT UNSIGNED ,
    rating FLOAT DEFAULT 0,
    content TEXT NOT NULL,
    create_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    update_at DATETIME,

    FOREIGN KEY(user_id) REFERENCES users(id),
    FOREIGN KEY(product_id) REFERENCES products(id),
    PRIMARY KEY(user_id,product_id)

);

我已经通过ID获得了产品信息。我还可以获得该产品的所有评论。

$this->query('
            SELECT r.*
        FROM products AS p, reviews AS r
        ON p.id = r.product_id 
        WHERE id = :id
        ');
$this->bind(':product_id',$product['id']);
$reviews = $this->single();

如何获取评论者的姓名?我使用PHP和MVC模型。我想在产品页面的详细信息下方显示注释及其所有者。哪一种是最佳方法。请帮助我

0 个答案:

没有答案