PDO复合提取模式

时间:2011-01-29 07:38:04

标签: php pdo

只是好奇,如果说我有sql在这个结构中返回数据

array(
    0 => array(
        'article.id' => '1001',
        'article.title' => 'lorem ipsum',
        'article.body' => 'dolor sit',
        'user.id' => '2012',
        'user.name' => 'foo',
        'user.email' => 'foo@example.com'
    ),
    1 => array(
        'article.id' => '1001',
        'article.title' => 'lorem ipsum',
        'article.body' => 'dolor sit',
        'user.id' => '2013',
        'user.name' => 'bar',
        'user.email' => 'bar@example.com'
    )
);

正如您所看到的,两者实际上是指同一篇文章,但是由两个不同的用户共同编写,而不使用任何其他ORM / DB库和普通的PDO,您将如何将数据库返回的数据转换为以下形式:

array(
    0 => array(
        'article.id' => '1001',
        'article.title' => 'lorem ipsum',
        'article.body' => 'dolor sit',
        'user' => array(
            0 => array(
                'user.id' => '2012',
                'user.name' => 'foo',
                'user.email' => 'foo@example.com'
            ),
            1 => array(
                'user.id' => '2013',
                'user.name' => 'bar',
                'user.email' => 'bar@example.com'
            )
        ),
    )
);

并且,哪个DB库(如果可能,没有ORM)可以不费吹灰之力地完成这项工作?

2 个答案:

答案 0 :(得分:1)

为什么不进行两个单独的查询,一个用于检索文章,另一个用于检索与文章相关的用户数据,而不是在一个查询中检索文章和用户数据。它肯定更简单,可能更有效率。

答案 1 :(得分:0)

在PDO类中使用此方法不是一个好习惯。 PDO与DB一起使用,应该返回结构化数据。您可以编写自己的函数,使用返回的数组进行操作。