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

时间:2016-10-21 14:35:50

标签: php object pdo

出于纯粹的好奇心,有人能快速告诉我是否有可能吗?我没有那样实现它,但回头看,我想知道是否可以做到。这是场景:

两个定义成本之间的产品,服务和关系表的表

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,name,Services of array。
  • 班级服务具有以下属性:id,name,cost
 //$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");

1 个答案:

答案 0 :(得分:1)

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

由于PDO在__construct()之前注入了类属性的值,你可能能够在构造函数中提取一些巫术魔法,但我对此并不太确定。

无论哪种方式,这通常都是固体ORM层可以为您提供的东西之一。并some are out there