我有一个名为
的中间表app_services
它由以下列组成:
最终表是服务表:
服务
我在app_services上尝试使用hasManyThrough。但它返回了错误的结果..
对于app_id = 1,它的服务ID为1&但它正在返回service_id的pf 1& 4。
在我的app_model中,我按如下方式定义关系:
public function services()
{
return $this->hasManyThrough(
'App\Service', 'App\AppService',
'service_id', 'service_id', 'app_id'
);
}
现在看起来对我好吗?有人会检查是否正确。
谢谢!
答案 0 :(得分:1)
public function services()
{
return $this->belongsToMany('App\Service');
}
现在,通过这种关系声明,Laravel“假设”数据透视表名称服从规则并且是app_service.But,如果它实际上不同(例如,它是复数),则可以将其作为第二个参数提供:
public function services()
{
return $this->belongsToMany('App\Service','app_services');
}
' app_services'是一个中间表名称
此外,您可以指定该数据透视表的实际字段名称,如果它们与默认的app_id和service_id不同。然后再添加两个参数 - 首先是当前模型字段,然后是要加入的模型的字段
public function services()
{
return $this->belongsToMany('App\Service','app_services','app_id','service_id');
}
现在,使用此关系可以检索数据
$app = App::find($app_id);
$app->services();