使用PHP和MySQL中的可搜索数组数据存储和检索对象

时间:2014-02-25 21:46:33

标签: php mysql orm

想象一下你有一个像

这样的课程
class Person {
 public $id;
 public $name;
 public $cars = array();
}

$cars是一系列汽车(例如array('mercedes', 'toyota'))。

如何将数据存储在数据库中以便搜索数组(例如选择所有拥有丰田的人)并使用相同的查询检索完全填充的对象(例如,获取属于的所有其他车辆)那些人也是。)

编辑:

通过“存储对象”我的意思是它的数据。

2 个答案:

答案 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上找到更多设计示例和示例查询。