我需要设计存储文件所有元数据的表(即文件名,作者,标题,创建日期)和自定义元数据(用户已添加到文件中,例如CustUseBy,CustSendBy).无法预先设置自定义元数据字段的数量.实际上,确定在文件中添加了什么和多少自定义标记的唯一方法是检查表中存在的内容.
为了存储它,我创建了一个基表(具有文件的所有公共元数据),一个Attributes表(包含可以在文件上设置的附加,可选属性)和一个FileAttributes表(为文件的属性赋值).
CREAT TABLE FileBase (
id VARCHAR(32) PRIMARY KEY,
name VARCHAR(255) UNIQUE NOT NULL,
title VARCHAR(255),
author VARCHAR(255),
created DATETIME NOT NULL,
) Engine=InnoDB;
CREATE TABLE Attributes (
id VARCHAR(32) PRIMARY KEY,
name VARCHAR(255) NOT NULL,
type VARCHAR(255) NOT NULL
) Engine=InnoDB;
CREATE TABLE FileAttributes (
sNo INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
fileId VARCHAR(32) NOT NULL,
attributeId VARCHAR(32) NOT NULL,
attributeValue VARCHAR(255) NOT NULL,
FOREIGN KEY fileId REFERENCES FileBase (id),
FOREIGN KEY attributeId REFERENCES Attributes …Run Code Online (Sandbox Code Playgroud) 我正在为我的laravel应用程序构建一个分层导航模块 - 就像在Magento或WooCommerce中完成的那样.这是一个想法:产品可以分配单个或多个属性,然后用户应该能够使用这些属性过滤产品.像属性"材料"一样,可以为产品分配一个或多个值,如铁,木材和塑料.我的问题是我无法弄清楚如何正确地做到这一点.
我的数据模型是这样的:
products table: id | name | other info...
example: 42 | Chair | ...
example: 14 | Bike | ...
attributes table: id | name | description
example: 02 | Material | the material that the...
attribute_options table: id | attribute_id | value
example: 11 | 02 | Wood
example: 12 | 02 | Iron
pivot table: id | product_id | attribute_option_id
example: 12 | 42 | 11 …Run Code Online (Sandbox Code Playgroud) WordPress的wp_postmeta表有一个帖子的所有附加字段,但它们是行,所以很容易添加更多.
但是,现在我想查询所有帖子的所有字段,我明显希望列中的那些字段而不是一行.
这是我正在运行的查询
SELECT p.post_title,
m.meta_value,
m.meta_key
FROM wp_posts p
JOIN wp_postmeta m
ON p.id = m.post_id
WHERE p.id = 72697;
Run Code Online (Sandbox Code Playgroud)
这将为我提供所有meta_values及其各自的元键作为列.但我需要将元键值作为列,将元值作为行
例如,a meta_key可能是additional_description,它的价值可能是What's up
所以我需要这样的东西
SELECT p.post_title, additional_description
FROM wp_posts p
JOIN wp_postmeta m
ON p.id = m.post_id
WHERE p.id = 72697;
Run Code Online (Sandbox Code Playgroud)
我需要它作为专栏.我还需要所有的帖子,而不是特定的帖子,但每当我删除where它只是不查询(我有很多帖子,这可能是一个问题).
这是一些示例数据以及我希望结果如何显示wp_postmeta表
meta_key post_id meta_key meta_value
1 5 total_related 5
2 5 updated 0
3 5 cricket 1
4 8 total_related 8
5 8 updated 1
6 8 cricket …Run Code Online (Sandbox Code Playgroud)