SQL クエリに必要なすべてのデータを取得しようとして、大きな問題が発生しています。私はまだクエリに慣れていないので、これをできるだけ詳しく説明しようと思います。
Wordpress プラグイン NextGen Gallery でクロス クエリを実行しようとしています。基本的に と の 2 つのテーブルがnggalbumありnggalleryます。私がやろうとしているのは、すべてのアルバムとギャラリーのネストされたリストを作成することです。
のデータにnggalbumは、列id、name、slug、previewpic、albumdesc、sortorderおよびが含まれていますpageid。私が興味を持っている唯一の値は、、、、idおよびです。の値は、このエントリと他のすべてのアルバムおよびギャラリー エントリの関係データを持つシリアル化されたデータです。例:これは基本的に、現在のクエリ アイテムに 2 つのサブアルバム ("a" で始まる対応する ID) があることを意味します:と. ギャラリーがある場合、番号には接頭辞がなく、です(すぐに説明します)。nameslugsortordersortordera:2:{i:0;s:2:"a2";i:1;s:2:"a6";}a2a6angggallery gid
nggalbumこれを使用して、テーブルからすべてのデータを取得します。
$albums = $wpdb->get_results("SELECT * FROM $wpdb->nggalbum" , OBJECT_K );
foreach ($albums as $key => $value) {
$albums[$key]->id = 'a' . $key;
$albums[$key]->galleries = empty ($albums[$key]->sortorder) ? array() : (array) unserialize($albums[$key]->sortorder) ;
$albums[$key]->name = stripslashes( $albums[$key]->name );
$albums[$key]->albumdesc = stripslashes( $albums[$key]->albumdesc );
}
サンプルデータ:
Array
(
[1] => stdClass Object
(
[id] => a1
[name] => Image Gallery
[slug] => image-gallery
[previewpic] => 0
[albumdesc] =>
[sortorder] => a:2:{i:0;s:2:"a2";i:1;s:2:"a6";}
[pageid] => 0
[galleries] => Array
(
[0] => a2
[1] => a6
)
)
[2] => stdClass Object
(
[id] => a2
[name] => ALBUM 1 - High res
[slug] => album-1-high-res
[previewpic] => 0
[albumdesc] =>
[sortorder] => a:2:{i:0;s:1:"2";i:1;s:1:"3";}
[pageid] => 0
[galleries] => Array
(
[0] => 2
[1] => 3
)
)
aこれらの ID はアルバムなので、すべての ID にプレフィックスを追加します。これは後で役立つと考えました。自分が何をしているのかわからないので、そうではないかもしれません。
nggallery列gid、name、slug、path、title、galdesc、pageid、previewpicおよびが含まれますauthor。関連する列はgid、name、slug、path、およびのみtitleです。
nggalleryこれを使用して、テーブルからすべてのデータを取得します。
$galleries = $wpdb->get_results( "SELECT SQL_CALC_FOUND_ROWS * FROM $wpdb->nggallery", OBJECT_K );
foreach ($galleries as $key => $value) {
$galleriesID[] = $key;
$galleries[$key]->counter = 0;
$galleries[$key]->title = stripslashes($galleries[$key]->title);
$galleries[$key]->galdesc = stripslashes($galleries[$key]->galdesc);
$galleries[$key]->abspath = WINABSPATH . $galleries[$key]->path;
}
サンプルデータ:
Array
(
[2] => stdClass Object
(
[gid] => 2
[name] => new_collection
[slug] => new-collection
[path] => wp-content/gallery/new_collection
[title] => NEW COLLECTION
[galdesc] =>
[pageid] => 0
[previewpic] => 8
[author] => 1
[counter] => 0
[abspath] => /Applications/MAMP/htdocs/igal/wp-content/gallery/new_collection
)
[3] => stdClass Object
(
[gid] => 3
[name] => cha-collection
[slug] => cha-collection
[path] => wp-content/gallery/cha-collection
[title] => CHA COLLECTION
[galdesc] =>
[pageid] => 0
[previewpic] => 15
[author] => 1
[counter] => 0
[abspath] => /Applications/MAMP/htdocs/igal/wp-content/gallery/cha-collection
)
今、これは私が立ち往生するところです。galleries各アルバムの配列を解析し、対応するアルバムやギャラリーに関連付けるコードを書きたいと思っていますnggallery。
最終的には、次のようなアルバム/ギャラリーのネストされたリストを実現したいと考えています。
(a1) [link] Title
(a2) [link] Title
1 [link] Title
2 [link] Title
3 [link] Title
(a3) [link] Title
1 [link] Title
[...]
これについてどうやって始めればいいのか、私には完全にはわかりません。いくつかのステートメントでいくつかのことをループしようforeachとしましたが、ほとんど失敗しました。これをGoogleで検索しますが、この手法が何と呼ばれているのかわかりません。
このようなことを行う方法を本当に理解したいので、このテクニックに光を当てていただければ幸いです. 同様のチュートリアルまたは基本的な概念へのリンクは、私にとって非常に有益です。誰かが私のためにすべてのコードを実行するとは思っていませんが、正しい方向へのステップは大歓迎です (そして、コードを実行したい場合は、いくつかのステップで、もちろん議論しません;))。
どうもありがとうございました!
トレ