我正在使用类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