PHPackages                             ufpel-csi/cobalto-php-activerecord - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Database &amp; ORM](/categories/database)
4. /
5. ufpel-csi/cobalto-php-activerecord

ActiveLibrary[Database &amp; ORM](/categories/database)

ufpel-csi/cobalto-php-activerecord
==================================

cobalto-php-activerecord is an open source ORM library for mysql and postgres based on the ActiveRecord pattern.

v2.1.3(1y ago)1324[1 issues](https://github.com/UFPEL-CSI/cobalto-php-activerecord/issues)MITPHPPHP &lt;= 7.4

Since Apr 6Pushed 1y ago1 watchersCompare

[ Source](https://github.com/UFPEL-CSI/cobalto-php-activerecord)[ Packagist](https://packagist.org/packages/ufpel-csi/cobalto-php-activerecord)[ Docs](https://github.com/UFPEL-CSI/cobalto-php-activerecord)[ RSS](/packages/ufpel-csi-cobalto-php-activerecord/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (10)Dependencies (1)Versions (20)Used By (0)

Cobalto ActiveRecord - Version 2.1.2
====================================

[](#cobalto-activerecord---version-212)

Introdução
----------

[](#introdução)

Um breve resumo do que é ActiveRecord:

> Registro ativo é uma abordagem para acessar dados em um banco de dados. Uma tabela ou visualização do banco de dados é agrupada em uma classe, assim, uma instância de objeto está vinculada a uma única linha na tabela. Após a criação de um objeto, uma nova linha é adicionada a a tabela ao salvar. Qualquer objeto carregado obtém suas informações do banco de dados; quando um objeto é atualizado, o linha correspondente na tabela também é atualizada. A classe wrapper implementa métodos de acesso ou propriedades para cada coluna na tabela ou visualização.

Mais detalhes podem ser encontrados [aqui](http://en.wikipedia.org/wiki/Active_record_pattern).

Essa implementação é inspirada e, portanto, empresta muito do ActiveRecord do Ruby on Rails. Tentamos manter suas convenções enquanto nos desviamos principalmente por conveniência ou necessidade. Claro, existem algumas diferenças que serão óbvias para o usuário se ele estiver familiarizado com trilhos.

### Minimum Requirements

[](#minimum-requirements)

- PHP &gt;= 7.0.0 and &lt;= 7.4

- Driver PDO para seu respectivo banco de dados com personalizações feitas pela equipe de desenvolvimento da ufpel

### Supported Databases

[](#supported-databases)

- MySQL
- PostgreSQL

### Features

[](#features)

- Finder methods
- Dynamic finder methods
- Writer methods
- Relationships
- Validations
- Callbacks
- Serializations (json/xml)
- Transactions
- Support for multiple adapters
- Miscellaneous options such as: aliased/protected/accessible attributes

Instalação
----------

[](#instalação)

```
composer require ufpel-csi/cobalto-php-activerecord
```

### Configuração

[](#configuração)

A configuração é muito fácil e direta. Existem essencialmente apenas três pontos de configuração com os quais você deve se preocupar:

1. Configurando o diretório auto\_load do modelo.
2. Configurando suas conexões de banco de dados.
3. Configurando a conexão do banco de dados a ser usada em seu ambiente.

Exemplo:

```
ActiveRecord\Config::initialize(function($cfg)
{
   $cfg->set_model_directory('/path/to/your/model_directory');
   $cfg->set_connections(
     array(
       'development' => 'mysql://username:password@localhost/development_database_name',
       'test' => 'mysql://username:password@localhost/test_database_name',
       'production' => 'mysql://username:password@localhost/production_database_name'
     )
   );
});
```

O PHP ActiveRecord será o padrão para usar seu banco de dados de desenvolvimento. Para teste ou produção, basta definir o padrão conexão de acordo com seu ambiente atual ('teste' ou 'produção'):

```
ActiveRecord\Config::initialize(function($cfg)
{
  $cfg->set_default_connection(your_environment);
});
```

Depois de definir essas três configurações, você estará pronto. ActiveRecord cuida do resto para você. Ele não requer que você mapeie seu esquema de tabela para arquivos yaml/xml. Ele consultará o banco de dados para obter essas informações e armazene-o em cache para que não faça várias chamadas ao banco de dados para um único esquema.

Testes
------

[](#testes)

```
docker-compose up

docker-compose exec web-record vendor/bin/phpunit -c phpunit.xml test/
```

Exemplos
--------

[](#exemplos)

### Retrieve

[](#retrieve)

Estes são seus métodos básicos para encontrar e recuperar registros de seu banco de dados. Veja a seção [*Finders*](https://www.phpactiverecord.org/projects/main/wiki/Finders) para mais detalhes.

```
$post = Post::find(1);
echo $post->title; # 'My first blog post!!'
echo $post->author_id; # 5

# also the same since it is the first record in the db
$post = Post::first();

# finding using dynamic finders
$post = Post::find_by_name('The Decider');
$post = Post::find_by_name_and_id('The Bridge Builder',100);
$post = Post::find_by_name_or_id('The Bridge Builder',100);

# finding using a conditions array
$posts = Post::find('all',array('conditions' => array('name=? or id > ?','The Bridge Builder',100)));
```

### Create

[](#create)

Aqui criamos uma nova postagem instanciando um novo objeto e então invocando o método save().

```
$post = new Post();
$post->title = 'My first blog post!!';
$post->author_id = 5;
$post->save();
# INSERT INTO `posts` (title,author_id) VALUES('My first blog post!!', 5)
```

### Update

[](#update)

Para atualizar, você só precisa encontrar um registro primeiro e depois alterar um de seus atributos. Ele mantém um array de atributos que estão "sujos" (que foram modificados) e assim nosso sql só atualizará os campos modificados.

```
$post = Post::find(1);
echo $post->title; # 'My first blog post!!'
$post->title = 'Some real title';
$post->save();
# UPDATE `posts` SET title='Some real title' WHERE id=1

$post->title = 'New real title';
$post->author_id = 1;
$post->save();
# UPDATE `posts` SET title='New real title', author_id=1 WHERE id=1
```

### Delete

[](#delete)

Excluir um registro não *destruirá* o objeto. Isso significa que ele chamará sql para deletar o registro em seu banco de dados, mas você ainda pode usar o objeto se precisar.

```
$post = Post::find(1);
$post->delete();
# DELETE FROM `posts` WHERE id=1
echo $post->title; # 'New real title'
```

Créditos
--------

[](#créditos)

Todo o código abaixo é baseado na biblioteca php-activerecord, originalmente criada por: kien la Jacques Fuentes

- [@kla](https://github.com/kla) - Kien La
- [@jpfuentes2](https://github.com/jpfuentes2) - Jacques Fuentes

###  Health Score

28

—

LowBetter than 54% of packages

Maintenance26

Infrequent updates — may be unmaintained

Popularity15

Limited adoption so far

Community10

Small or concentrated contributor base

Maturity53

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 66.7% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~44 days

Recently: every ~125 days

Total

17

Last Release

420d ago

Major Versions

v1.0.2 → v2.0.0-rc12023-05-15

PHP version history (5 changes)v1.0.2PHP &gt;=5.3.0 &lt;=5.6.40

v2.0.0-rc1PHP &gt;=5.3.0,&lt;=7.0.0

v2.0.0PHP &gt;=7.0.0,&lt;=7.2.0

v2.0.3PHP &gt;=7.0,&lt;=7.2.0

v2.1.1PHP &lt;= 7.4

### Community

Maintainers

![](https://www.gravatar.com/avatar/31f04e8c0133c999df1ee0bbb72a4f684669e3c91b3ff4df77ff8f2ee9bfe95c?d=identicon)[vandersonos](/maintainers/vandersonos)

---

Top Contributors

[![vandersonos](https://avatars.githubusercontent.com/u/1584057?v=4)](https://github.com/vandersonos "vandersonos (4 commits)")[![fgscaglioni](https://avatars.githubusercontent.com/u/3134347?v=4)](https://github.com/fgscaglioni "fgscaglioni (1 commits)")[![hvianna](https://avatars.githubusercontent.com/u/1033735?v=4)](https://github.com/hvianna "hvianna (1 commits)")

---

Tags

ormactiverecord

### Embed Badge

![Health badge](/badges/ufpel-csi-cobalto-php-activerecord/health.svg)

```
[![Health](https://phpackages.com/badges/ufpel-csi-cobalto-php-activerecord/health.svg)](https://phpackages.com/packages/ufpel-csi-cobalto-php-activerecord)
```

###  Alternatives

[php-activerecord/php-activerecord

php-activerecord is an open source ORM library based on the ActiveRecord pattern.

1.3k397.8k21](/packages/php-activerecord-php-activerecord)[tommyknocker/pdo-database-class

Framework-agnostic PHP database library with unified API for MySQL, MariaDB, PostgreSQL, SQLite, MSSQL, and Oracle. Query Builder, caching, sharding, window functions, CTEs, JSON, migrations, ActiveRecord, CLI tools, AI-powered analysis. Zero external dependencies.

845.7k](/packages/tommyknocker-pdo-database-class)[bephp/activerecord

micro activerecord library in PHP(only 400 lines with comments), support chain calls and relations(HAS\_ONE, HAS\_MANY, BELONGS\_TO).

1202.1k2](/packages/bephp-activerecord)[spinitron/yii2-dynamic-ar

Extends Yii ActiveRecord for Maria Dynamic Columns

576.8k](/packages/spinitron-yii2-dynamic-ar)[php-patterns/activerecord

php-activerecord is an open source ORM library based on the ActiveRecord pattern.

449.2k](/packages/php-patterns-activerecord)[cycle/active-record

Provides a simple way to work with your database using Active Record pattern and Cycle ORM

671.3k3](/packages/cycle-active-record)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
