[英]How to use conditions in update/delete commands with Hanami::Repository?
無法弄清楚如何使用 Hanami::Repository 按條件更新/刪除記錄。
例如,有這些表: users
和clients
。 用戶有:
deleted_at
列,用於將用戶標記為已刪除client_id
列,作為clients
表上的外鍵僅當記錄未標記為已刪除且由特定客戶端限定范圍時,如何才能通過id
更新用戶?
這是偽代碼:
Users
.joins(:clients)
.where('clients.id = ?', client_id)
.where(deleted_at: nil)
.update(new_attributes)
我認為它應該適用於您的情況
UserRepository.new.users
.where(id: user_id, deleted_at: nil, client_id: client_id)
.update(attributes)
寶石版本:
賞花模型 (1.3)
頁 (1.1.4)
只是擴展了we138的回答:
Hanami 在其存儲庫下使用ROM和Sequel 。
如果您對如何為查詢添加過濾器有任何疑問,您可以隨時查看Hanami 存儲庫和這些 gem 的文檔。
使用 hanami 存儲庫,您可以按照we138 的描述進行此更新:
UserRepository.new.users
.where(id: user_id, deleted_at: nil, client_id: client_id)
.update(attributes)
這將返回受影響的行數。
如果您希望使用過濾器更新條目並返回受影響的行,您可以直接使用 sequel:
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.