一个简单的ORM

1.2.0 2021-04-26 03:09 UTC

This package is not auto-updated.

Last update: 2024-09-23 19:44:43 UTC


README

我的ORM或者什么都没有。

对象关系映射库。该库的提议很简单:零配置。无需注解或声明。

如何使用?

Comment.php 文件

namespace App;

use Mormon\Mormon;

class Comment extends Mormon {
    public function getPost(){
        return $this->getOne(Post::class);
    }
}

Post.php 文件

namespace App;

use Mormon\Mormon;

class Post extends Mormon {
    public function getComments(){
        return $this->getMany(Comment::class)
    }
}

index.php 文件

require 'vendor/autoload.php';

use Mormon\Mormon;
use App\Post;
use App\Comment;

// Configurações necessárias para conexão com o banco.
$config = [
    "dsn" => "mysql:host=localhost;dbname=test",
    "user" => "root",
    "password" => "12345",
    "options" = []
];

// Inicialização da conexão
Mormon::init($config);

// ... Criando um novo registro no BD
$post = new Post();
$post->set('timestamp', date('Y-m-d H:i:s'))
     ->set('title', 'Meu primeiro post')
     ->set('text', 'Hora de gravar!')
     ->create();

// ... Atualizando os dados no BD
$post->set('text', 'Hora de atualizar!')->update();

// ... Obtendo informações de relacionamentos.
$post = new Post($id);
$comments = $post->getComments();

foreach ($comments as $comment){
    // Faça alguma coisa com os objetos.
}

就这么多。

使用了哪些约定?

  • 预期每个表都应该有一个简单的主键(PK);
  • 使用字段 id 作为主键,但可以通过在实现的实体作用域中设置属性 public static $pk = 'id' 来修改。
  • 对于表名,执行 CamelCase → snake_case 转换,但可以使用不同的名称配置属性 public static $table = 'tabela';
  • 对于关系,外键(FK)采用字段名作为表名_PK。请参阅文档以获取外键键自定义配置的详细信息。