4

PDO を使用して 2 つのテーブルからデータをロードし、2 番目のテーブル データを最初のテーブルのサブ配列として設定することは可能ですか? 例えば:

テーブル :

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 => .......
              )            
            )
          )
4

2 に答える 2

2

このコードがどれほど効率的かはわかりませんが、group_concatconcat mysql 関数の組み合わせを使用して、サブクエリからデータを 1 つの行/列に取得し、それを 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 | 1@@yourLink, 2@@SomeOtherLink
2  | ble ble | 1@@yourLinkRow2, 2@@SomeOtherLinkAgain

PHP では、これを配列に戻すのはかなり簡単です。

于 2012-09-25T10:40:38.307 に答える
1

いいえ、PDOから直接結果を取得することはできません。通常、オブジェクト関係マッピングと呼ばれる、オブジェクトを自分でハイドレイトする必要があります。

または、 DoctrineのようなORMフレームワークを試すこともできます。

于 2012-09-25T10:32:41.940 に答える