2011-01-29 31 views
1

只是好奇,如果讓說我有SQL在這種結構PDO複雜的提取模式

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

返回數據正如你可以看到這兩個實際上指的是同一篇文章,而是由2個不同的用戶共同撰寫,不使用任何其他的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' => '[email protected]' 
      ), 
      1 => array(
       'user.id' => '2013', 
       'user.name' => 'bar', 
       'user.email' => '[email protected]' 
      ) 
     ), 
    ) 
); 

而且,其DB庫(如果可能的話,沒有ORM)可以做到這一點沒有很多努力?

回答

1

而不是做一個聯接來檢索一個查詢中的文章和用戶數據,爲什麼不做兩個單獨的查詢,一個檢索文章,第二個檢索與文章相關的用戶數據?這當然更簡單,可能更有效。

+0

如果我返回的行數多於2行,並且它有許多由不同作者共同編寫的文章,該怎麼辦?如果我將一個大的查詢分成2個,那還會更好嗎? – Jeffrey04 2011-01-29 10:11:28

0

在PDO類中使用此方法並不是一個好習慣。 PDO與數據庫協同工作,並應返回結構化數據。你可以編寫你自己的函數,它會對返回的數組進行操作。