Попробуйте увидеть это в English
, чем в PHP
, таким образом, вы сможете использовать правильные функции в нужных местах.
Таким образом, у вас есть 3 таблицы: компании, вакансии и сотрудники
Теперь, прежде чем приступить к изучению модели в Laravel, вам необходимо знать, каковы отношения между этими тремя таблицами.
Я предполагаю, что отношения между компаниями и рабочими местами - это одна ко многим, что означает одну компаниюможет иметь много рабочих мест.
Отношения между рабочими местами и сотрудниками один к одному, потому что одному сотруднику может быть назначена одна работа.
Теперь, в зависимости от вашего проекта, эти отношения могут отличаться, ноПервый шаг - установить отношения между тремя таблицами.
Теперь, предполагая, что у вас есть те же отношения, что я объяснил выше, ваши Модели будут иметь следующие «публичные» функции:
//Company Model
//this function will returns all the jobs associated with the specific company_id
public function jobs()
{
return $this->hasMany('App\Job');
}
========
//Job Model
//this function will return the employee associated with the specific job_id
public function employee()
{
return $this->hasOne('App\Employee');
}
//now you can also have a function to fetch the company to which the job "belongs to", this is a reverse case which means, the jobs table has "company_id"
public function company()
{
return $this->belongsTo('App\Company');
}
И то же самое вы можете сделать в модели сотрудника, потому что каждый сотрудник принадлежит к работе, значит, есть job_id, так что вы будетеОтношение se принадлежит к:
//Employee Model
//now you can also have a function to fetch the job to which the employee "belongs to", this is a reverse case which means, the employees table has "job_id"
public function job()
{
return $this->belongsTo('App\Job');
}
Следует отметить, что hasOne и serveTo являются функциями, которые являются аналогами друг друга.
Таким образом, если модель Job использует hasOne для Employee, Employee будет использовать ownTo для Job, учитывая, что в таблице employee в качестве внешнего ключа задан "job_id".Имеет значение только то, какую модель вы используете, исходя из того, что вы можете получить сведения о другой модели, используя эти функции.
Более подробную информацию, конечно, см. В официальной документации . Надеюсь, это поможет устранить вашу путаницу