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;
}
}
我想知道您是否可以使推进查询的 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;
}
}