Вот мои модели
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();
}