2016-10-21 36 views
0

出于纯粹的好奇心,任何人都可以快速告诉我是否有可能吗?我没有这样实施,但回头看,我想知道是否可以做到。下面是这种情况:PHP 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,名称,服务数组。
  • 类服务有一个属性: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"); 

回答

1

PDO似乎并不具有任何嵌套关系数据转化成一个给定对象的支持。看看fetch的文档。您大概可以构建将产品关系加载到Product类本身并将其手动调用所需的逻辑。

由于PDO在__construct()之前注入了类属性的值,所以你可以在构造函数中使用一些巫毒术,但我并不太确定。

无论哪种方式,这通常是一个固体ORM层可以提供给您的东西之一。和someareoutthere

+0

谢谢Marco。是的,昨天没有完成。我其实只是在线观看这个项目,这个场景再次突然出现在我的脑海中,我想我会把它放在这里。我绝对会检查你的链接。 :) – mcv

+0

很高兴有任何帮助。哦,并且唯恐我们忘记了美丽的[Eloquent](https://laravel.com/docs/5.3/eloquent)! –