我有一个表格,如下所示;
Table: offers (Model: Offer)
id
Table: clients (Model: Client)
id
Table: offer_requests (Model: OfferRequest)
id
offer_id
client_id
所以,关系应该是这样的;
-
offer
有多个offer_requests
-
offer
有多个clients
(通过offer_requests
( -
client
有多个offer_requests
-
client
有多个offers
(通过offer_requests
( -
offer_request
属于一个offer
-
offer_request
属于一个client
我能弄清楚的是;
-
offer
有很多offer_requests
---反转:offer_request
属于offer
-
client
有很多offer_requests
---反转:offer_request
属于client
我无法弄清楚的;
-
offer
有多个clients
到offer_requests
-
client
有多个offers
到offer_requests
如果我仔细阅读手册,hasManyThrough关系在这里不起作用。我认为这应该是一种多对多的关系。
如果我是对的:如何将offer_requests
表用作中间/数据透视表?
如果我不是:如何解决这个问题?
更新:工作
我现在已将关系设置如下;
型号: 报价
class Offer extends Model
{
public function clients()
{
return $this->belongsToMany(Client::class, 'offer_requests')->using(OfferRequest::class);
}
}
型号:客户端
class Client extends Model
{
public function offers()
{
return $this->belongsToMany(Offer::class, 'offer_requests')->using(OfferRequest::class);
}
}
型号: 报价请求
use IlluminateDatabaseEloquentRelationsPivot;
class OfferRequest extends Pivot
{
protected $table = 'offer_requests';
}
查看文档
定义自定义中间表模型
你可以让它成为二对多的关系