PHP 的无线 ORM

安装: 7

依赖: 0

建议: 0

安全: 0

星标: 1

关注者: 1

分支: 0

公开问题: 1

类型:项目

dev-develop 2023-07-19 12:24 UTC

This package is auto-updated.

Last update: 2024-09-19 14:57:12 UTC


README

RichBuilds Components

🔗 ORM

PHP 8.1 的无线、类型安全的 ORM。

目前仅支持 MySql 数据源,但计划支持 Sqlite 和 Postgres。

ORM 从数据库获取所有指令。请确保您的主键和外键设置正确。

示例用法

$orm = new Orm(new PDO('dsn','username','password'));

模型

  • 表示表中的一行

创建一个空模型

  • 如果表不存在则失败
$post = $orm->Model('posts');  

设置列值

  • 如果列不存在则失败
  • 如果值不是列兼容的数据类型则失败
$post->set('title', 'My Post Title'); 

设置多个列值

  • 如果任何列失败则不更改任何列
$post->set([
    'title'='My Post Title',
    'body'=>'My post body.',
    'created'=>new Datetime()
]);

将外键列设置为现有记录

  • 如果父记录不存在则失败
$post->set('author_id', 1); 

将外键列设置为新的模型

  • 如果模型类型不正确则失败
$user = $orm->Model('user');
$post->set('author_id', $user);

将外键列设置为包含父模型值的数组

$user = ['name'=>'foo','password'=>'password'];
$post->set('author_id', $user);

设置模型的子级

  • 接受字段或模型的数组
$user->set('comments',[
    ['comment'=>'foo', 'visible'=>false],
    $orm->Model('comments')->set('comment', 'bar')
]);

保存模型、其父级和其子级

  • 在事务内部,错误时回滚
  • 所有键都会更新
$post->save();
echo $post->getPk();

获取父模型

  • 如果列名不是外键或父级不存在则失败
$author = $post->fetchParent('author_id');
// SELECT * FROM users WHERE users.id = posts.author_id
echo $author->get('name');

懒加载获取子级

  • 如果子表名不是父表的子表则失败
$posts = $user->fetchChildrent('posts');
// SELECT * FROM posts WHERE posts.author_id = user.id

查询

创建一个查询

$posts = $orm->Query('posts', 
    [
        'author_id'=>1
    ],
    [
        'per_page'=>10
    ]
)

// SELECT * FROM database.posts WHERE database.posts.author_id = :1 LIMIT 10 OFFSET 0;

foreach($posts as $post) {
  echo $post->get('title');
  $comments = $post->fetchChildren('comments');
}