私は流暢なインターフェイスに基づいて私のサイトのデータベースクラスを作成しています。まず、すべての意味のある用語を集め、基本的に配列である「スタック」に入れます。次に、実際のSQLクエリに表示されるように並べ替えます。例えば同じサブキーの配列のマージ/削除
const stmt_select = 1;
const stmt_insert = 2;
const stmt_delete = 3;
const sql_select = 10;
const sql_from = 11;
const sql_into = 12;
const sql_where = 13;
const sql_join = 14;
const sql_group = 15;
const sql_order = 16;
const sql_limit = 17;
、以下のクエリ(総ごみ順であるが、と意図クラスをオフにスローしようとしている):
Query::Select('name', 'age', 'height')
->Order('a')
->From('table')
->From('asd')
->Group('a')
->Execute();
..は生成:
Array
(
[0] => Array
(
[0] => 10
[1] => Array
(
[0] => name
[1] => age
[2] => height
)
)
[1] => Array
(
[0] => 11
[1] => asd
)
[2] => Array
(
[0] => 11
[1] => table
)
[3] => Array
(
[0] => 15
[1] => a
)
[4] => Array
(
[0] => 15
[1] => a
)
)
私が持っている問題は、複数のインスタンスが存在する場合には、複数のインスタンスがある場合に、それらを一緒にマージしようとする配列メンバ(例えばmultiple - > Selects()/ - > Where()節)と、 (> - > Limit()、 - > Order()など)が複数存在するようになっていますが、これを行う最も簡単な方法は何か分かりません。
私は各サブキーを呼び出すことができる関数の行に沿って何かを考えていました。
DeleteDuplicates(sql_order);
Merge(sql_select);
クエリごとに大量のパフォーマンスヒットなしでこれらを書き込む方法がわかりません。
私はいつもforeach()ループを使うことができますが、クエリを実行する頻度を考慮すると、1回のクエリで複数のループを実行することで大きなパフォーマンスが得られないようにしたいと考えています。おそらくもっと良い方法がありますか? – kvanberendonck