无法弄清楚如何使用Hanami :: Repository根据条件更新/删除记录。
例如,有以下表:tsconfig.json
和{
... (other configs)
"compilerOptions": {
"lib": [ "es2017", "dom" ],
"target": "es5"
}
... (other configs)
}
。
用户具有:
users
列,用于将用户标记为已删除clients
列,作为deleted_at
表上的外键仅当记录未标记为已删除并由特定客户端确定范围时,如何才能通过client_id
更新用户?
这是伪代码:
clients
答案 0 :(得分:1)
我认为这应该适合您的情况
UserRepository.new.users
.where(id: user_id, deleted_at: nil, client_id: client_id)
.update(attributes)
gem版本:
hanami模型(1.3)
pg(1.1.4)
答案 1 :(得分:0)
只需扩展we138的答案即可:
Hanami使用ROM和Sequel作为存储库。
如果您对如何为查询添加过滤器有任何疑问,可以随时查看Hanami repositories以及这些gem的文档。
使用hanami存储库,您可以按照we138所述进行此更新:
UserRepository.new.users
.where(id: user_id, deleted_at: nil, client_id: client_id)
.update(attributes)
这将返回受影响的行数。
如果您希望使用过滤器更新条目并返回受影响的行,则可以直接使用续集:
Sequel::Model.db[:users]
.where(id: user_id, deleted_at: nil, client_id: client_id)
.returning
.update(attributes)
您可以在以下链接中找到有关如何使用ROM和Sequel筛选查询的更多信息:
https://rom-rb.org/4.0/learn/sql/queries/
https://sequel.jeremyevans.net/rdoc/files/doc/dataset_filtering_rdoc.html