---
name: "DBIx::DR::Iterator"
section: "3pm"
platform: "linux"
package: "libdbix-dr-perl"
version: "0.32-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/DBIx::DR::Iterator"
---

# DBIx::DR::Iterator(3pm)

iterator for DBIx::DR.

## NAME

DBIx::DR::Iterator - iterator for DBIx::DR.

## SYNOPSIS

```
    my $it = DBIx::DR::Iterator->new($arrayref);
    printf "Rows count: %d\n", $it->count;
    while(my $row == $it->next) {
        print "Row: %s\n", $row->field;
    }
    my $row = $it->get(15); # element 15
    my $it = DBIx::DR::Iterator->new($hashref);
    printf "Rows count: %d\n", $it->count;
    while(my $row == $it->next) {
        print "Row: %s\n", $row->field;
    }
    my $row = $it->get('abc'); # element with key name eq 'abc'
```

## DESCRIPTION

The package constructs iterator from HASHREF or ARRAYREF value.

## Methods

### new

Constructor.

```
    my $i = DBIx::DR::Iterator->new($arrayset [, OPTIONS ]);
```

Where **OPTIONS** are:

- \-item =\> 'decamelized\_obj\_define';

  It will bless (or construct) row into specified class. See below.

  By default it constructs DBIx::DR::Iterator::Item objects.

- \-noitem\_iter =\> TRUE\|FALSE

  Don't pass iterator to item constructor.

- \-keep\_blessed =\> TRUE\|FALSE

  Force store blessed item into iterator. Default value is `"true"`.

### count

Returns count of elements.

### is\_changed

Returns (or set) flag that one of contained elements was changed.

### exists(name\|number)

Returns **true** if element '**name\|number**' is exists.

### get(name\|number)

Returns element by '**name\|number**'. It will throw exception if element isn't exists.

### next

Returns next element or **undef**.

### reset

Resets internal iterator (that is used by next).

### all

Returns all elements (as an array).

If You notice an argument it will extract specified fields:

```
    my @ids = $it->all('id');
```

The same as:

```
    my @ids = map { $_->id } $it->all;
```

### grep

Constructs new iterator that is subset of parent iterator.

```
    my $busy = $list->grep(sub { $_[0]->busy ? 1 : 0 });
```

### push

Pushes one element into iterator.

If You use HASH-iterator You have to note key name.

*Example*

```
    $hiter->push(abc => { id => 1 });
    $hiter->push(abc => $oiter->get('abc'));
    $aiter->push({ id => 1 });
```

## DBIx::DR::Iterator::Item

One row. It has methods names coincident with field names. Also it has a few additional methods:

### new

Constructor. Receives two arguments: **HASHREF** and link to iterator.

```
    my $row = DBIx::DR::Iterator::Item->new({ id => 1 });
    $row = DBIx::DR::Iterator::Item->new({ id => 1 }, $iterator); }
```

### iterator

Returns (or set) iterator object. The link is created by constructor. This is a weaken link.

### is\_changed

Returns (or set) flag if the row has been changed. If You change any of row's fields the flag will be set. Also iterator's flag will be set.

## COPYRIGHT

```
 Copyright (C) 2011 Dmitry E. Oboukhov <unera@debian.org>
 Copyright (C) 2011 Roman V. Nikolaev <rshadow@rambler.ru>
 This program is free software, you can redistribute it and/or
 modify it under the terms of the Artistic License.
```
