ufpel-csi/cobalto-php-activerecord
Composer 安装命令:
composer require ufpel-csi/cobalto-php-activerecord
包简介
cobalto-php-activerecord is an open source ORM library for mysql and postgres based on the ActiveRecord pattern.
关键字:
README 文档
README
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.
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
- PHP >= 7.0.0 and <= 7.4
- Driver PDO para seu respectivo banco de dados com personalizações feitas pela equipe de desenvolvimento da ufpel
Supported Databases
- MySQL
- PostgreSQL
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
composer require ufpel-csi/cobalto-php-activerecord
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:
- Configurando o diretório auto_load do modelo.
- Configurando suas conexões de banco de dados.
- 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
docker-compose up docker-compose exec web-record vendor/bin/phpunit -c phpunit.xml test/
Exemplos
Retrieve
Estes são seus métodos básicos para encontrar e recuperar registros de seu banco de dados. Veja a seção 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
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
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
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
Todo o código abaixo é baseado na biblioteca php-activerecord, originalmente criada por: kien la Jacques Fuentes
- @kla - Kien La
- @jpfuentes2 - Jacques Fuentes
ufpel-csi/cobalto-php-activerecord 适用场景与选型建议
ufpel-csi/cobalto-php-activerecord 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 332 次下载、GitHub Stars 达 1, 最近一次更新时间为 2023 年 04 月 06 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「orm」 「activerecord」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 ufpel-csi/cobalto-php-activerecord 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 ufpel-csi/cobalto-php-activerecord 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 ufpel-csi/cobalto-php-activerecord 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
ActiveRecord for API
CalendarView widget for Yii 2 Framework.
Kinikit - PHP Application development framework MVC component
PHP Database ORM for Symfony1. Do NOT use for new projects: please move to a newest Symfony release and Doctrine2
Relational attributes support for YII2 ActiveRecord
Fast ActiveRecord
统计信息
- 总下载量: 332
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 1
- 点击次数: 13
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2023-04-06