定制 hamboldt/silk-orm 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

hamboldt/silk-orm

Composer 安装命令:

composer require hamboldt/silk-orm

包简介

Object Relational Mapper for zend-db

README 文档

README

License Build Status Scrutinizer Code Quality Total Downloads Latest Stable Version

O ORM Silk (seda em inglês) é um sistema de mapeamento de objetos integrado com a estrutura do Zend Framework 2 que foi pensado para ser prático, leve, e de fácil configuração. Ele permite transformar tabela em objetos e posteriormente acessar os dados utilizando o padrão de busca SQL do Zend. Em outras palavras, o papel dele é mapear seus objetos apenas em nível de arrays. Todo o resto fica com o Zend - transação de arrays com o banco de dados.

composer require hamboldt/silk-orm

Como funciona

Configurações

Classes
  • @configure {"table":"table_name"} - Especifica qual é a tabela do objeto no banco de dados.
  • @configure {"primary_key":"idtable"} - Especifica qual é a chave primária da tabela.
Propriedades
  • @configure {"ignore":true} - Ignora a propriedade do objeto na construção das queries.
  • @configure {"ignoreIfNull":true} - Ignora a propriedade do objeto, apenas se nula.
  • @configure {"alias":"somecolumn"} - Especifica o nome da coluna da propriedade na tabela.
  • @configure {"type":"\\Garage\\Car"} - Instanciamento automático de objetos mapeáveis.

Como usar

Instanciamento

O exemplo abaixo deve ser seguido quando formos instanciar apenas um objeto. Pode-se usar perfeitamente as clausulas where do Zend tal como usa-se em seus TableGateways, afinal, o Silk usa o TableGateway do ZF2 para construir seus resultados.

$user = new User(1); // pelo valor da chave primária
$user = new User(["name"=>"lucas"]); // por um where com array
$user = new User(function(Select $select){ /* ... */ }); // Pelo select do zf2

Multipla seleção

O exemplo abaixo deve ser seguido quando formos instanciar múltiplos objetos. Para armazenar coleções de objetos, usamos a biblioteca easyframework/collections.

$collection = User::select(["name"=>"lucas"]);
$collection = User::select(function(Select $select){ /* ... */ });

$collection->map(function(User $user){
   echo $user->getCompany()->getName() . "\n";
});

Inserindo novo registro

Quando o objeto é instanciado e não se passa nenhum valor no construtor como parâmetro ele é criado vazio, isto é, não vai ter nenhum valor, nem uma id definida para o mesmo. Quando o objeto tem um id nulo ($company->getId() == null) ao chamar o método save() um novo registro será inserido no banco. Se ele ja tiver um id definido, o registro será atualizado.

$company = new Company();
$company->setName("Softwerk");
$company->save();

echo $company->getId(); // 1

Atualizando um registro

Quando o objeto já possui uma id definida, e chamamos o método save()o registro cuja chave primária for a id do objeto será atualizado no banco de dados, conforme o exemplo abaixo.

Instanciamento por chave primária
$company = new Company(1);
$company->setName("Softwerk LTDA");
$company->save();
Instanciamento por array explicita
$company = new Company(['idcompany' => 1]);
$company->setName("Softwerk LTDA");
$company->save();
Instanciamento por where do ZF2
$company = new Company(function(Select $select){
   $select->where->equalTo('idcompany', '1');
   $select->limit(1);
});
$company->setName("Softwerk LTDA");
$company->save();
Atualizando múltiplos registros

Atualiza todos os registros onde a coluna nome tiver o valor 'Softwerk'.

Company::select(['name' => 'Softwerk'])->map(function(Company $company){
   $company->setName('The name has changed!');
   $company->save();
});

Removendo um registro

Um objeto só será removido quando o sua id estiver definida, assim como nas operações de atualização. Para remover um registro do banco de dados basta chamar o método delete() do objeto, assim como no exemplo abaixo.

$company = new Company(1);
$company->setName("Softwerk LTDA");
$company->delete();
Removendo vários registros

Exemplo abaixo irá remover todos os objetos onde o valor da coluna name for igual a Softwerk.

Company::select(['name' => 'Softwerk'])->map(function(Company $company){
   $company->delete();
});

hamboldt/silk-orm 适用场景与选型建议

hamboldt/silk-orm 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 52 次下载、GitHub Stars 达 1, 最近一次更新时间为 2015 年 08 月 12 日, 在 PHP 生态内属于活跃度较高的组件。

我们在过去多个企业项目中使用过 hamboldt/silk-orm 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 hamboldt/silk-orm 我们能提供哪些服务?
定制开发 / 二次开发

基于 hamboldt/silk-orm 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 52
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 1
  • 点击次数: 17
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 1
  • Watchers: 1
  • Forks: 1
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2015-08-12