Laravel检查belongstomany是否包含belongstomany
Laravel check if belongstomany contains belongstomany
在我的系统中:
- 一条线索属于许多销售人员
- 经理属于许多销售人员
我正在尝试通过销售人员检查潜在客户是否有经理。这是一项政策,因此我可以确保经理可以看到他们销售人员的销售线索。
像这样:
$lead->salespeople->contains($manager->salespeople)
是否有一种收集方法可以让我这样做?我也试过这样的东西,但也不起作用:
$lead->salespeople->contains('id', $manager->salespeople->pluck('id')->toArray())
编辑,我想我明白了。这看起来正确吗?:
$lead->salespeople->intersect($manager->salespeople)->count() > 0
最终用这个包解决了这个问题:https://github.com/staudenmeir/eloquent-has-many-deep
这是我现在的关系方法:
public function managers()
{
return $this->hasManyDeepFromRelations($this->salespeople(), (new User)->setAlias('salesperson')->managers());
}
在我的系统中:
- 一条线索属于许多销售人员
- 经理属于许多销售人员
我正在尝试通过销售人员检查潜在客户是否有经理。这是一项政策,因此我可以确保经理可以看到他们销售人员的销售线索。
像这样:
$lead->salespeople->contains($manager->salespeople)
是否有一种收集方法可以让我这样做?我也试过这样的东西,但也不起作用:
$lead->salespeople->contains('id', $manager->salespeople->pluck('id')->toArray())
编辑,我想我明白了。这看起来正确吗?:
$lead->salespeople->intersect($manager->salespeople)->count() > 0
最终用这个包解决了这个问题:https://github.com/staudenmeir/eloquent-has-many-deep
这是我现在的关系方法:
public function managers()
{
return $this->hasManyDeepFromRelations($this->salespeople(), (new User)->setAlias('salesperson')->managers());
}