PHP PDO在获取数据时,是否可以将数据获取到包含另一个对象的对象中


PHP PDO when fetching data, can data be fetched into an Object which contains another Object?

纯粹出于好奇,谁能快速告诉我这是否可能?我没有这样做,但回头看,我想知道它是否可以做到。场景如下:

产品、服务的表以及两者定义成本之间的关系表

Product ID |     Name
   1       |   Product A
   2       |   Product B
Service ID |  Name
   1       | Service A
   2       | Service B
   3       | Service C
Price ID  |  Cost  | Product ID | Service ID
    1     |  1     |     1      |    1
    2     |  2     |     1      |    3
    3     |  3     |     2      |    2
    4     |  4     |     2      |    3

如果有表数据对象,就会有:

  • 类产品的属性:id,名称,服务数组。
  • 类服务有属性:id,名称,成本

 //$query = obtain a list of all products with services and prices;
 //$query = obtain a product and all it's associated services and prices; 
 $statement = $pdo->prepare($query);
 $statement -> execute();
 $results = $statement ->fetchAll(PDO::FETCH_CLASS,"Product");

PDO似乎不支持将任何关系数据嵌套到给定对象中。请查看fetch的文档。您可以构建将产品关系加载到product类本身所需的逻辑,并手动调用它。

由于PDO在__construct()之前注入了类属性的值,您可能能够在构造函数中实现一些巫术,但我不太确定。

无论哪种方式,这都是实体ORM层可以提供的典型功能之一。有些人就在那里