Реляционные данные Laravel Pivot Table не извлекаются - PullRequest
0 голосов
/ 23 января 2019

у меня четыре стола.

country
----------
id,name

service
----------
id,name

country_service
----------
id,country_id,service_id

country_service_rate
----------
id,country_service_id,rate

Теперь я хочу получить значение строки таблицы country_service_rate.

модель Country_service

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 голосов
/ 23 января 2019

Если у вас модель 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, вы можете получить доступ к его скорости.

...