2017 © Pedro Peláez
 

library silk-orm

Object Relational Mapper for zend-db

image

hamboldt/silk-orm

Object Relational Mapper for zend-db

  • Thursday, November 19, 2015
  • by hamboldt
  • Repository
  • 1 Watchers
  • 0 Stars
  • 38 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 1 Forks
  • 1 Open issues
  • 10 Versions
  • 0 % Grown

The README.md

silk-orm

License Build Status Scrutinizer Code Quality Total Downloads Latest Stable Version, (*1)

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., (*2)

composer require hamboldt/silk-orm, (*3)

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., (*4)

$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., (*5)

$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., (*6)

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

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

, (*7)

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., (*8)

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'., (*9)

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., (*10)

$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., (*11)

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

The Versions

19/11 2015

dev-master

9999999-dev

Object Relational Mapper for zend-db

  Sources   Download

MIT

The Requires

 

by Lucas A. de Araújo

19/11 2015
28/09 2015
19/08 2015

v1.1.0

1.1.0.0

Object Relational Mapper for zend-db

  Sources   Download

MIT

The Requires

 

by Lucas A. de Araújo

18/08 2015

v1.1.0-beta

1.1.0.0-beta

Object Relational Mapper for zend-db

  Sources   Download

MIT

The Requires

 

by Lucas A. de Araújo

14/08 2015

v1.0.1

1.0.1.0

Object Relational Mapper for zend-db

  Sources   Download

MIT

The Requires

 

by Lucas A. de Araújo

14/08 2015

dev-scrutinizer-patch-2

dev-scrutinizer-patch-2

Object Relational Mapper for zend-db

  Sources   Download

MIT

The Requires

 

by Lucas A. de Araújo

14/08 2015

dev-scrutinizer-patch-1

dev-scrutinizer-patch-1

Object Relational Mapper for zend-db

  Sources   Download

MIT

The Requires

 

by Lucas A. de Araújo

13/08 2015

v1.0.0

1.0.0.0

Object Relational Mapper for zend-db

  Sources   Download

MIT

The Requires

 

by Lucas A. de Araújo

12/08 2015

v1.0.0-beta

1.0.0.0-beta

Object Relational Mapper for zend-db

  Sources   Download

MIT

The Requires

 

by Lucas A. de Araújo