Propel 查询中的动态 Table 名称

Dynamic Table Name in Propel Query

我想知道您是否可以使推进查询的 Table 名称动态化(有点像可变变量)?例如 \"DynamicVar"Query::create()。我让它在 ifs 中工作,就像我下面的例子一样,但如果更动态地制作,可以去掉相当多的行。这些表的设置都相同,因此可以将它们视为同一个对象,只是名称不同。

目前正在发生这样的事情:

//$dynamic is a result of grabbing it from a different table 
//that corresponds to values passed by AJAX
$dyanmic = "Customer"
$query = null;
If( $dynamic == "Customer" ) $query = \CustomerQuery()::create();
If( $dynamic == something2 ) $query = \Table2Query()::create();
If( $dynamic == something3 ) $query = \Table3Query()::create();

If( $query != null ) {
   $query->filterBy("something");
   $query->find();
}

我尝试了一些代码,下面的代码将用于动态更改 table,只要每个 table 都可以被视为同一个对象。您可以定义 $table 并以这种方式将其用于 returns 您想要的对象

的函数
function Get_Table($table,$id){
    $query = null;
    $queryClass = '\'. ucfirst($table) . 'Query';
        if ( class_exists( $queryClass ) ) {
            $$dynamics = $queryClass::create()
                ->filterById($id)
                ->find();

            if( $dynamics->getFirst() == null ) { return false; }
            /** @var \Base\.ucfirst($table) $dynamic*/
            $dynamic= $dynamics->getFirst();

            return $dynamic;
        }

        //On Failure
        else {
            return false;
        }
}