2016-10-19 6 views
1

У меня есть объект Bid. Ставка может принадлежать Клиенту или Перевозчику (полиморфная принадлежность).Loopback; полиморфный принадлежит To и hasManyThrough в зависимости от типа владельца

Кроме того, Клиент может принадлежать Перевозчику (если Клиент принадлежит Перевозчику, он не может предлагать цену), и Клиент является тем, кто выполняет услугу, за которую они торгуют.

Итак, если Перевозчик делает ставку, он должен назначить для нее клиентов. В этом случае у многих клиентов может быть много ставок, но они не являются заявителями.

Интересно, как это лучший способ сделать это. Это как условное отношение.

Я попробовал это в bid.json:

"relations":{ 
    "bidder":{ 
    "type": "belongsTo", 
    "polymorphic": true 
    }, 
    "customers": { 
    "type": "hasMany", 
    "model": "customer", 
    "foreignKey": "customerId" 
    } 
} 

customer.json:

"relations": { 
    "bids": { 
    "type": "hasMany", 
    "model": "Bid", 
    "foreignKey": "bidderId", 
    "polymoprhic": "bidder" 
    } 
    "carrier": { 
    "type": "belongsTo", 
    "model": "Carrier", 
    "foreignKey": "carrierId" 
    }, 
    "assignments": { 
    "type": "hasMany", 
    "model": "Bid", 
    "foreignKey": "bidId" 
    } 
} 

carrier.json

"relations": { 
    "bids": { 
    "type": "hasMany", 
    "model": "Bid", 
    "foreignKey": "bidderId", 
    "polymoprhic": "bidder" 
    } 
    "carrier": { 
    "type": "hasMany", 
    "model": "Customer", 
    "foreignKey": "" 
    } 
} 

ответ

0

I ан добавьте новый объект «Присвоение». Таким образом, если оператор делает ставку, он может назначить для нее клиентов. Если клиент является претендент, он присваивает себе автоматически

bid.json

"relations":{ 
    "bidder":{ 
    "type": "belongsTo", 
    "polymorphic": true 
    }, 
    "assignments": { 
    "type": "hasMany", 
    "model": "assignment", 
    "foreignKey": "bidId" 
    } 
} 

customer.json

"relations": { 
    "bids": { 
     "type": "hasMany", 
     "model": "Bid", 
     "foreignKey": "bidderId", 
     "polymoprhic": "bidder" 
    } 
    "carrier": { 
     "type": "belongsTo", 
     "model": "Carrier", 
     "foreignKey": "carrierId" 
    }, 
    "assignments": { 
     "type": "hasMany", 
     "model": "Assignment", 
     "foreignKey": "customerId" 
    } 
    } 

carrier.json

"relations": { 
    "bids": { 
    "type": "hasMany", 
    "model": "Bid", 
    "foreignKey": "bidderId", 
    "polymoprhic": "bidder" 
    }, 
    "customers": { 
    "type": "hasMany", 
    "model": "Customer", 
    "foreignKey": "carrierId" 
    } 
} 

assignment.json

"relations": { 
    "customer": { 
     "type": "belongsTo", 
     "model": "Customer", 
     "foreignKey": "" 
    }, 
    "licitacion": { 
     "type": "belongsTo", 
     "model": "Bid", 
     "foreignKey": "" 
    } 
    }