我想知道是否可以使 propel 查询的表名称动态化(有点像变量)?一个例子类似于“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 并以这种方式将其用于返回所需对象的函数
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;
}
}
关于php - Propel Query 中的动态表名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36401454/