---
name: "Tangram::FlatArray"
section: "3pm"
platform: "linux"
package: "libtangram-perl"
version: "2.07-1"
release: "Debian 3.1 (Sarge)"
platforms: ["linux"]
url: "https://new.carta.tech/Tangram::FlatArray"
---

# Tangram::FlatArray(3pm)

map Perl array of strings or numbers

## NAME

Tangram::FlatArray - map Perl array of strings or numbers

## SYNOPSIS

```
   use Tangram::Core;
   use Tangram::FlatArray; # always
```

```
   $schema = Tangram::Schema->new(
      classes => { NaturalPerson => { fields => {
```

```
      flat_array =>
      {
         interests =>
         {
            table => 'NP_int',
            sql => 'VARCHAR(50)',
         },
```

```
         lucky_numbers => 'int', # use defaults
      }
```

## DESCRIPTION

Maps references to a Perl array. The persistent fields are grouped in a hash under the `"array"` key in the field hash.

The array may contain only 'simple' scalars like integers, strings or real numbers. It may not contain references. For arrays of objects, see Tangram::Array and Tangram::IntrArray.

Tangram uses a table to save the state of the collection. The table has three columns, which contain

- \* the id of the container object

  - \* the position of the element in the array

  - \* the value of the element

  The field names are passed in a hash that associates a field name with a field descriptor. The field descriptor may be either a hash or a string. The hash uses the following fields:

- \* type

  - \* table

  - \* sql

  Optional field `"type"` specifies the type of the elements. If the type is `"string"`Tangram quotes the values as they are passed to the database.  Not specifying a `"type"` is exactly equivalent to specifying `"string"`.

Optional field `"table"` sets the name of the table that contains the elements. This defaults to 'C\_F', where C is the class of the containing object and F is the field name.

Optional field `"sql"` specifies the type that *deploy()* (see Tangram::Deploy) should use for the column containing the elements. If this field is not present, the SQL type is derived from the `"type"` field: if `"type"` is `"string"` (or is absent) VARCHAR(255) is used; otherwise, the `"type"` field is interpreted as a SQL type.

If the descriptor is a string, it is interpreted as the value of the `"type"` field and all the other fields take the default value.
