2012-09-25 7 views
4

PDO를 사용하여 두 테이블의 데이터를로드하고 두 번째 테이블 데이터를 첫 번째 테이블의 하위 어레이로 설정할 수 있습니까?두 테이블의 데이터를로드하고 두 번째 테이블 데이터를 하위 배열로 설정하십시오.

테이블 :

article (id, title, description) 
links (id, article_id, link) 

로드 데이터 ~ 예를 들어

stdClass Object 
     (
      [article.id] => 1 
      [article.title] => bla bla 
      [article.description] => example description 
      [article.links] => array (
       [0] => array (
       links.id => 1 
       links.article_id => 1 
       links.link => ....... 
      ) 
       [1] => array (
       links.id => 2 
       links.article_id => 1 
       links.link => ....... 
      )    
      ) 
     ) 

답변

1

아니, 당신은 직접 PDO의 결과를 얻을 수 없습니다. 일반적으로 객체 관계 매핑이라고하는 객체를 수화해야합니다.

Doctrine과 같은 ORM 프레임 워크를 사용해 볼 수도 있습니다.

+0

thx, 시도해 보겠습니다. – Eugen

1

이 코드가 얼마나 효율적인지 모르겠지만 group_concatconcat mysql 함수를 조합하여 하위 쿼리의 한 행/열로 데이터를 가져올 수 있습니다. PHP로 배열.

select 
    id, 
    title, 
    group_concat(concat(b.ID, '@@', b.link)) as linkies 
from 
    article a 
     right outer join links b 
      on b.article_id=a.ID 
group by 
    id, 
    title 

이것은 당신의 PDO 결과에 돌아 오는 이런 일이 발생할 것입니다 :

ID | Title | linkies 
1 | bla bla | [email protected]@yourLink, [email protected]@SomeOtherLink 
2 | ble ble | [email protected]@yourLinkRow2, [email protected]@SomeOtherLinkAgain 

일단 PHP에서,이 배열로 다시 가지고 fairily 쉬운 것입니다.

관련 문제