php – 使用Propel选择特定列而不使用别名
使用Propel 1.6提供的方法重写简单查询时遇到了一些麻烦.
查询如下: SELECT type_id,COUNT(id) as `count` FROM visit GROUP BY type_id; 使用Propel,我写了以下内容: $visitCount = VisitQuery::create() ->withColumn('COUNT(id)','count') ->groupBy('TypeId') ->find(); 这会生成以下查询: SELECT visit.ID,visit.JOB_ID,visit.ENGINEER_ID,visit.TYPE_ID,visit.VISIT_DATE,visit.STATUS,COUNT(id) AS count FROM `visit` GROUP BY visit.TYPE_ID 哪个有效,但我只需要列type_id和计数,所以我尝试添加以下内容: $visits = VisitQuery::create() ->withColumn('COUNT(id)','count') ->select(array('TypeId')) ->groupBy('TypeId') ->find(); 这会生成以下(工作)查询: SELECT COUNT(id) AS count,visit.TYPE_ID AS "TypeId" FROM `visit` GROUP BY visit.TYPE_ID 但是,我不想为type_id列添加别名.我尝试将实际的列名称传递给select数组( – > select(array(‘type_id’))),但这导致以下查询(显然不起作用): SELECT COUNT(id) AS count,AS "type_id" FROM `visit` GROUP BY visit.TYPE_ID 如何在没有别名的情况下检索type_id列? 解决方法
Propel抽象列名称,以便您的PHP不一定需要了解它们.
从PropelORM.org开始:
TypeID将是架构中phpName等于的内容.尝试使用此而不是mysql列名称. 考虑到这一点,如果您真的想使用列的实际名称,可以使用propel的introspection classes来实现.例如: var_dump(VisitPeer::getTableMap()->getColumnByPhpName('TypeId')->getName()); var_dump(VisitPeer::getTableMap()->getColumn('type_id')->getPhpName()); 但正如documentation本身所说:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |