php - Propel Query 中的动态表名称

标签 php propel

我想知道是否可以使 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/

相关文章:

php - 我想选择 1 到 3 之间或 7 到 10 之间的某些行,在 mysql 和 laravel 中,具体的查询是什么?

php - 如何在此 php 脚本中输出平均值和总计

php - 切换语句以设置事件菜单项

mysql - Propel Criteria::setLimit() 像 LIMIT 0,6

php - Propel 是否知道对象何时被软删除,以便子实体仍然可以显示其已删除的父实体?

javascript - PHP触发从iframe到其他页面的提交

php - php/sql 中的数字和计算

php - 无法将 FOR UPDATE 附加到标准推进

mysql - symfony 1.4,$this->save() 和 mysql 插入触发器

symfony1 - 插入或 Doctrine ;对于 Symfony 1.4 来说哪个 ORM 更好