Propel - 检查列是不是为自动增量

Posted

技术标签:

【中文标题】Propel - 检查列是不是为自动增量【英文标题】:Propel - check if column is autoincrementPropel - 检查列是否为自动增量 【发布时间】:2016-07-08 11:10:44 【问题描述】:

propel2 中有没有办法检查列是否为 autoincrement ?我的假设是使用类似于

$query = new UsersQuery();

$columns = $query->getTableMap()->getColumns();

foreach ($columns as $column) 
    $column->isAutoIncrement(); //method does not exist

但是,在迭代getColumns 的结果时,实际上检查列是否为autoincrement 的内容并不存在。在这种情况下可以做什么?

【问题讨论】:

【参考方案1】:

默认值AUTO_INCREMENT 是特定于驱动程序的。您不能指望专门用于此的方法。在 mysql 中可能是 AUTOINCREMENT,在 PostgreSQL 中可能是 SEQUENCE,等等...

我的建议是找到主键,因为我希望您确实搜索此列。

另一种解决方法是从迁移中获取 CREATE TABLE 代码并手动解析它。但是没有内置的方法。即使您执行getDefaultValue(),您也不会收到AUTO_INCREMENT,而是该列的NULL

【讨论】:

以上是关于Propel - 检查列是不是为自动增量的主要内容,如果未能解决你的问题,请参考以下文章

MySQL 序列与 id 列的自动增量

Laravel - Cockroach DB - 自动增量正在生成 UUID

Propel (PHP ORM),基本用法为所有(非空)表和列返回 NULL

表A至表B中的触发ID

如何使用自动增量更新字段 CONCAT?

检查 kapt 是不是使用增量注释处理