在 v2 很多帖子都可以看到,Laravel 和 Rails 的 ORM 几乎是大家公认最好用的 ORM ,Sutando 就是他们在 Node.js 里的 “复刻版”,如果你之前用过 Laravel ,那你使用 Sutando 几乎没有学习成本,因为它们的使用起来几乎相同 (功能实现了 80%+)。
地址: https://github.com/sutandojs/sutando
文档: https://sutando.org
npm install sutando mysql2 --save
const { sutando, Model } = require('sutando');
// 连接信息
sutando.addConnection({
client: 'mysql2',
connection: {
host : '127.0.0.1',
port : 3306,
user : 'root',
password : '',
database : 'test'
},
});
const db = sutando.connection();
// 查询构造器
const users = await db.table('users').where('age', '>', 35).get();
// 模型定义
class User extends Model {}
// 查询
const users = await User.query().where('age', '>', 35).get();
// 新增
const user = new User;
user.name = 'David Bowie';
await user.save();
// 删除
await user.delete();
// 分页
const users = await User.query().paginate(1, 15);
// 关联预加载
const users = await User.query().with('posts').get();
// 关联条件
const users = await User.query().with({
posts: q => q.where('likes_count', '>', 100)
}).get();
// 关联延迟加载
await user.load('posts');
await users.load('posts');
最后:Welcome Star, PR and Issues !
1
SayHelloHi 352 天前
很棒
文档很完善 |
2
luckrnx09 352 天前
厉害了。前不久看到 https://github.com/drizzle-team/drizzle-orm ,感觉楼主写的这个跟它有点像。
|
3
0x723b 352 天前
可以看看 kysely ,用起来比 knex 舒服很多
|
5
XCFOX 352 天前 1
我来给泼个冷水
2024 年了居然还没有 TypeScript Declaretions 你可以不用 TypeScript 但不能没有 Declaretions |
6
colliedog 352 天前 1
prisma 不香吗?
|
7
zhengfan2016 352 天前
@colliedog 要是能把 prisma 复刻到 PHP 那边就好了哈哈,
|
8
Leviathann 352 天前 4
where('age', '>', 35)
幽默,这种 api ,拿头跟别人 full type safe 的 api 比 写 query 一路 ctrl + space 下去就行了 |
9
kiddyu OP @SayHelloHi 谢谢,因为用法一样,文档直接 copy 的 Laravel :D
|
12
kiddyu OP @colliedog 大部分时候还是香的,就是之前在用 prisma 的时候,有几个地方因为功能不支持,需要自己手写 SQL ,就是因为这个才写了 Sutando
|
13
kiddyu OP @Leviathann 楼上提到的 kysely 也是 type safe ,也是这种 api ,这个没什么吧
|
14
fds 351 天前
哇,厉害,行动力真强。
|
15
yafoo 351 天前 via Android
我觉得 thinkphp3.2 的 orm 挺好的,复刻了一部分到我的项目 jj.js
|
16
treblex 350 天前 via iPhone
@Leviathann django 那个可好玩了 age__gt 这样子传
|
17
zbowen66 350 天前
支持 edge runtime 吗? prisma 的官方代理一言难尽...
|