[英]How to let laravel know that 2 (or many) many-to-many relationships are different when foreign keys are same
首先,我英语不好,很抱歉。
在我的情况下,我通过a_b
表从a
表到b
表有很多关系。 a 上的一行可以belongToMany
b
上a
belongToMany
行,并用a_b
列type
区分它们。
class A extends Model
{
public function bs
{
return $this->belongToMany(B::class)
->withPivot(['type']);
}
}
class B extends Model
{
public function as
{
return $this->belongToMany(A::class)
->withPivot(['type']);
}
}
当我在该关系上运行sync
方法时会出现问题,laravel 无法区分我关联的 2 个关系是否具有相同的外键但 diff type
。
A::find(1)->bs()->sync([
B::find(1)->id => ['type'=>1],
B::find(1)->id => ['type'=>2],
])
A::find(1)->bs()->where('id', 1)->count() // is 1 but I want it is 2
尝试使用bs
而不是bs()
,否则,您将使用方法链接,并且where()
条件将作为查询构建器应用于相关模型而不是关系集合。
A::find(1)->bs->where('id', 1)->count();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.