我正在使用類moduleSelectQuery
在PHP中生成SQL查詢。在php中使用遞歸屬性的對象
基本上,這個類打破了一個SQL SELECT查詢的各個組件,如表名,字段選擇,在WHERE條件等
不過,這很快就變得複雜嵌套查詢,如WHERE table1.field1 IN (SELECT table2.field2 from table2 WHERE table2.field3 = criteria)
目前我有一個moduleSelectQuery
叫做$inWhereClause
屬性,用於存儲WHERE... IN(SELECT...)
子句。像其他屬性(即$tableName, $whereClause, $havingClause
)一樣,這可以通過基於用戶輸入的自身功能一起解析。
但是,這個解析函數從根本上是有限的。即使我花了足夠的精力去解析$whereClause
屬性,它也不能有額外的嵌套選擇語句。
我認爲這樣做的一種方法是將$inWhereClause
設置爲另一個moduleSelectQuery
對象。這意味着母公司moduleSelectQuery
將具有本身是moduleSelectQuery
的財產,即它將是遞歸對象。這是可能的/良好的做法在PHP?還有其他缺點嗎?
父母的延伸子對象?也許改變它,所以你有一個objcet創建一個select語句作爲父對象的子元素,它創建了「final」語句,所以你可以多次調用子元素來創建主選擇和子選擇,然後它們被合併回到主要對象中。也許聲明模板可以與某種形式的工廠一起使用來構建查詢。我只是在吹噓c的想法。 – Dave