我有一个如下所示的表格;
Table: offers (Model: Offer)
id
Table: clients (Model: Client)
id
Table: offer_requests (Model: OfferRequest)
id
offer_id
client_id
所以,关系应该是这样的;
offer
有多个offer_requests
offer
有多个客户
(通过offer_requests
)客户端
有多个offer_requests
客户
有多个报价
(通过offer_requests
)offer_request
属于一个offer
offer_request
属于一个客户
我能弄清楚的是;
offer
hasManyoffer_requests
--- 逆:offer_request
ownsTooffer
client
hasManyoffer_requests
--- 逆:offer_request
属于client
我不明白;
offer
通过offer_requests
拥有多个客户
客户
通过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);
}
}
型号:OfferRequest
use Illuminate\Database\Eloquent\Relations\Pivot;
class OfferRequest extends Pivot
{
protected $table = 'offer_requests';
}
最佳答案
定义自定义中间表模型
关于php - 如何设置 Laravel 与中间表的多对多关系,中间表不仅是数据透视表,还代表模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51758791/