3

私は3つの関連モデルを持っています:

class Transaction
  include DataMapper::Resource    
  property :id, Serial     
  property :volume, Float
  property :deal_date, Date  
  belongs_to :buyer
  belongs_to :seller
end

class Seller
  include DataMapper::Resource    
  property :id,         Serial
  property :name,   String      
  has n, :transactions
end

class Buyer
  include DataMapper::Resource    
  property :id, Serial
  property :name,   String, :length => 255, :index => true, :unique => true
  has n, :transactions
end

いくつかの条件でトランザクションへのクエリを作成したい:

x < volume < y
and
a < deal_date < b
and
( buyer.name like key_word OR seller.name like key_word )

Datamapper で 2 つの LIKE の間に OR 条件を作成するにはどうすればよいですか?

4

2 に答える 2

3

単純に queryTransactionですが、 および へのクエリパスがbuyer.nameありseller.nameます。

Transaction.all('buyer.name.like' => キーワード) | Transaction.all('seller.name.like' => キーワード)
于 2012-08-10T07:00:01.047 に答える
0

多分これはするでしょう:

key_word = '%blabla%'
trs = Transaction.all condition: [
        '   buyer_id IN (SELECT id FROM buyer WHERE name LIKE ?) 
         OR seller_id IN (SELECT id FROM seller WHERE name LIKE ?)', 
      key_word, key_word]
于 2014-09-23T22:28:15.510 に答える