我有四个桌子。
country
----------
id,name
service
----------
id,name
country_service
----------
id,country_id,service_id
country_service_rate
----------
id,country_service_id,rate
现在,我想获取country_service_rate表行的值。
国家/地区服务模式
public function rate(){
return $this->belongsTo('App\CountryServiceRate');
}
服务模型
public function country(){
return $this->belongsToMany(Country::class)->withPivot('id','is_base');
}
当我尝试获取与数据透视表相关的数据
$country->pivot->rate
获取空值。但是$country->pivot
显示country_service表行数据。
该国家/地区具有某些费率值,但这取决于服务。一个国家有很多服务。不同的服务国家有不同的费率值。
答案 0 :(得分:0)
如果您有CountryService
模型,则不会使用belongsToMany
关系。
我会这样定义我的关系:
CountryService -> country() - belongsTo - Country::class()
CountryService -> service() belongsTo - Service::class()
CountryService -> rate() belongsTo - Rate::class()
或者您想从其他国家/地区访问以进行评分:
Country -> countryServices() - hasMany - CountryService::class
Service -> countryServices() - hasMany - CountryService::class
对于Country
,您可以访问其countryServices
,但是您仍然需要对service_id
进行范围过滤,以选择所需的country_service
条目之一,一旦获得CountryService
的特定实例,就可以访问其速率。