Laravel数据透视表关系数据无法检索

时间:2019-01-23 11:03:48

标签: laravel laravel-5 eloquent laravel-5.2 laravel-5.1

我有四个桌子。

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表行数据。

该国家/地区具有某些费率值,但这取决于服务。一个国家有很多服务。不同的服务国家有不同的费率值。

1 个答案:

答案 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的特定实例,就可以访问其速率。