SQL クエリに必要なすべてのデータを取得しようとして、大きな問題が発生しています。私はまだクエリに慣れていないので、これをできるだけ詳しく説明しようと思います。
Wordpress プラグイン NextGen Gallery でクロス クエリを実行しようとしています。基本的に と の 2 つのテーブルがnggalbum
ありnggallery
ます。私がやろうとしているのは、すべてのアルバムとギャラリーのネストされたリストを作成することです。
のデータにnggalbum
は、列id
、name
、slug
、previewpic
、albumdesc
、sortorder
およびが含まれていますpageid
。私が興味を持っている唯一の値は、、、、id
およびです。の値は、このエントリと他のすべてのアルバムおよびギャラリー エントリの関係データを持つシリアル化されたデータです。例:これは基本的に、現在のクエリ アイテムに 2 つのサブアルバム ("a" で始まる対応する ID) があることを意味します:と. ギャラリーがある場合、番号には接頭辞がなく、です(すぐに説明します)。name
slug
sortorder
sortorder
a:2:{i:0;s:2:"a2";i:1;s:2:"a6";}
a2
a6
a
ngggallery
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で検索しますが、この手法が何と呼ばれているのかわかりません。
このようなことを行う方法を本当に理解したいので、このテクニックに光を当てていただければ幸いです. 同様のチュートリアルまたは基本的な概念へのリンクは、私にとって非常に有益です。誰かが私のためにすべてのコードを実行するとは思っていませんが、正しい方向へのステップは大歓迎です (そして、コードを実行したい場合は、いくつかのステップで、もちろん議論しません;))。
どうもありがとうございました!
トレ