我有两个模型:客户在一个系统上启动交易,销售人员在另一个系统上启动销售。我有一个中间表DataContext
,它在这些模型之间形成多对多关系,并包含置信度分数。
客户可以开始许多交易,信心评分衡量客户交易是否是发起最终销售交易的确切交易的可能性。 (例如,一个系统说第一个名字是" Joe"另一个系统说" Joseph"或者客户得到了升级因此Sale包含与交易相关但不同的产品)
我在Sale上有多对多的关系,可以返回所有匹配的优惠:
ListView
现在,我想要一个能够以最高置信度得分返回恰好一个交易的关系。 (我想要一个关系,所以我可以获得热切的加载和缓存。)
这样可行,但会返回长度为1的集合:
dms_matches
这是有效的,但不是一种关系,所以它不适用于急切的加载。
public function deals()
{
return $this->belongsToMany('App\Models\Deal', 'dms_matches', 'dms_sale_id')
->orderBy('dms_matches.confidence', 'DESC')
->withPivot('confidence');
}
如何构建行为类似于public function best_deal()
{
return $this->deals()->limit(1);
}
或public function getBestDealAttribute()
{
return $this->deals()->first();
}
关系但使用中间表的内容?