Наследование внутри отношений Eloquent - PullRequest
0 голосов
/ 18 января 2019

Вот мои модели

class Company extends Model {
    // attributes:
    // payment_method_id - not nullable
    // ...

    public function paymentMethod(){
        return $this->belongsTo('App\Models\PaymentMethod');
    }
}

class Location extends Model {
    // attributes:
    // company_id
    // payment_method_id - nullable
    // ...

    public function company(){
        return $this->belongsTo('App\Models\Company');
    }

    public function paymentMethod(){
        return $this->belongsTo('App\Models\PaymentMethod');
    }

    public function getPaymentMethodAttribute($value){
        return $value ?? $this->company->payment_method;
    }
}

Я хочу преобразовать динамический атрибут getPaymentMethodAttribute в отношение Eloquent в модели Location.

Итак, я хотел быв итоге получится что-то подобное на Location модели:

public function paymentMethod(){
    // give me the location payment_method and if none, give me the company paymentMethod
}

EDIT

Мне удалось сделать это несколько, но если нет paymentMethod для LocationЯ могу получить коллекцию только от Company, а не модель, которая мне нужна:

public function companyPaymentMethod(){
    return $this->hasManyThrough('App\Models\PaymentMethod', 'App\Models\Company','id','id','company_id','payment_method_id');
}

public function locationPaymentMethod(){
    return $this->belongsTo('App\Models\PaymentMethod','payment_method_id');
}

public function paymentMethod(){
    return $this->locationPaymentMethod ? $this->locationPaymentMethod() : $this->companyPaymentMethod();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...