我正在使用一个类 ,moduleSelectQuery
在 PHP 中生成 SQL 查询。
基本上,这个类分解了 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
将拥有一个本身就是 a 的属性moduleSelectQuery
,即它将是一个递归对象。这在 PHP 中是可能的/好的做法吗?还有其他缺点吗?