Принадлежит к сквозному методу - PullRequest
0 голосов
/ 24 мая 2018

Как мне сделать вид belongsToThrough, чтобы получить валюту плана через промежуточную таблицу стран?

Это моя структура БД:

plan
    id - integer
    country_id - string // country.code

country
    code - string
    currency_id - string // currency.code

currency
    code - string

Мне нуженcurrency() отношение в модели плана:

Я пробовал несколько раз безрезультатно.Я думал, что-то вроде этого, но это просто возвращает ноль:

class Plan extends \Illuminate\Database\Eloquent\Model
{
    public function currency()
    {
        return $this->belongsTo(
            Currency::class, // $related,
            'currency_id', // $foreignKey = null,
            'code', // $ownerKey = null,
            'country' // $relation = null
        );
    }

1 Ответ

0 голосов
/ 24 мая 2018

Вам нужно два BelongsTo отношения:

class Plan extends \Illuminate\Database\Eloquent\Model
{
    public function country()
    {
        return $this->belongsTo(Country::class, 'country_id', 'code');
    }
}

class Country extends \Illuminate\Database\Eloquent\Model
{
    public function currency()
    {
        return $this->belongsTo(Currency::class, 'currency_id', 'code');
    }
}

$currency = $plan->country->currency;

Если вы хотите получить валюту за один шаг:

class Plan extends \Illuminate\Database\Eloquent\Model
{
    public function getCurrencyAttribute()
    {
        return $this->country->currency;
    }
}

$currency = $plan->currency;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...