我想知道你是否可以使推进查询的表名动态(有点像变量变量)?一个例子就像\" 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();
}
答案 0 :(得分:2)
我玩了一些代码,只要每个表都可以被视为同一个对象,下面的代码将用于动态更改表。您可以定义$ 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;
}
}