У меня есть модель Сотрудник , которая имеет одну модель Должность .Модель Должность имеет много зарплат отношение модели:
Сотрудник назначен на «должность» (например, разработчик программного обеспечения).опыт работы
Модель сотрудника имеет поле "опыт", в котором указываются годы опыта
Я хочу получить зарплату для этого сотрудника с учетом его должности и многолетнего опыта работы
Я пытаюсь что-то вроде:
(в моей модели позиции):
public function salaryForExperienceYears($years)
{
return $this->hasOne(Salary::class)
->where('experience', $years)
->first()
->salary
;
}
(в моем контроллере, где я хочу получить информацию):
$employee->position->salaryForExperienceYears(1);
, если я жестко закодирую «1» для числа лет, это работает, логично.но я хочу использовать многолетний опыт этого сотрудника и не могу этого сделать:
$employee->position->salaryForExperienceYears($employee->experience);
Как мне это сделать?
Даже если я смогу найти способ сделать этоиспользуя эту структуру, кажется, что есть лучший способ сделать это ... потому что "опыт" уже является свойством в $ employee ...
так же, как у меня есть отношения для -> позиции, которая«ограничивая» результаты, используя поле position_id, доступное в $ employee, создается впечатление, что здесь должен быть способ, с помощью которого поле опыта также «выводится из контекста» (хотя это не отношение в другой таблице)
Может быть, я должен использовать какой-то другой тип отношений?