如何通过php知道哪些列在postgres中没有空约束?

时间:2016-02-17 03:12:55

标签: php postgresql null constraints

我试图通过php构建一些html输入元素,以填充postgres表中的行。

我想将一些属性“required”添加到某些html输入元素(那些与具有NOT NULL约束的列对应的元素)。

我如何知道哪些列具有该约束?

2 个答案:

答案 0 :(得分:0)

使用PDO(以及建议here),您应该可以按如下方式将其拉出来:

$q = $dbh->prepare("\d tablename");
$q->execute();
$table_fields = $q->fetchAll();
foreach ($table_fields as $field) {
    if (strpos($field['Modifiers'], 'not null') !== FALSE) {
         // this column ($field['Column']) has a "not null" constraint.
    }
}

编辑:如果您使用PostgreSQL PHP扩展程序已经死定,那就相同:

$q = pg_query("\d tablename");
while ($row = pg_fetch_array($result)) {
    if (strpos($row['Modifiers'], 'not null') !== FALSE) {
         // this column ($row['Column']) has a "not null" constraint.
    }
}

答案 1 :(得分:0)

使用Pomm,它将执行这些查询,以便您使用CLI检查数据库:

$ php vendor/bin/pomm.php pomm:inspect:relation test pika_chu
Relation public.pika_chu
+----+---------------+--------+-----------------------------------------------+---------+---------+
| pk | name          | type   | default                                       | notnull | comment |
+----+---------------+--------+-----------------------------------------------+---------+---------+
| *  | pika_chu_id   | int4   | nextval('pika_chu_pika_chu_id_seq'::regclass) | yes     |         |
|    | some_data     | int4   |                                               | yes     |         |
|    | nullable_data | bpchar |                                               | no      |         |
+----+---------------+--------+-----------------------------------------------+---------+---------+