想象一下你有一个像
这样的课程class Person {
public $id;
public $name;
public $cars = array();
}
$cars
是一系列汽车(例如array('mercedes', 'toyota')
)。
如何将数据存储在数据库中以便搜索数组(例如选择所有拥有丰田的人)并使用相同的查询检索完全填充的对象(例如,获取属于的所有其他车辆)那些人也是。)
编辑:
通过“存储对象”我的意思是它的数据。
答案 0 :(得分:1)
创建一个名为person
的表和一个名为car
的表以及一个名为car_person
的链接表
CREATE TABLE `car` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(32) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `person` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(32) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `car_person` (
`car_id` int(11) unsigned NOT NULL,
`person_id` int(11) NOT NULL,
PRIMARY KEY (`car_id`,`person_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
另外,在PHP中创建一个Car类:
class Car {
public $id;
public $name;
}
然后在Person类中使用汽车数组是汽车对象的数组,而不是名称......
答案 1 :(得分:1)
这是典型的many to many relationship。示例表将是:
人:
id
name
person_vehicle:
id
person_id
car_id
车辆:
id
manufacturer
您可以在this question上找到更多设计示例和示例查询。