В моей таблице базы данных есть список сотрудников:
Таблица: Сотрудники
Код модели сотрудника:
public function workplace()
{
return $this->morphTo();
}
Код модели компании:
public function workers()
{
return $this->morphMany('App\Employee', 'company');
}
Код модели филиала:
public function workers()
{
return $this->morphMany('App\Employee', 'company');
}
Теперь я получаю рабочие места пользователя в другой форме:
$userWorkplaces = Employee::where('user_id', Auth::id())->get();
$workplace_info = [];
foreach ($userWorkplaces as $workplace) {
if($workplace->company_type == "App\Company") {
$company = Company::findOrFail($workplace->company_id);
$type = 'Company';
} elseif($workplace->company_type == "App\Branch") {
$company = Branch::findOrFail($workplace->company_id);
$type = 'Branch';
}
$workplace_info[] = [
'company' => $company->name,
'type' => $type
];
}
dump($workplace_info);
Результат:
array:3 [
0 => array:2 [
"company" => "Mahorat"
"type" => "Company"
]
1 => array:2 [
"company" => "Babolo"
"type" => "Company"
]
2 => array:2 [
"company" => "Филиал Махорат"
"type" => "Branch"
]
]
Как я могу легко получить образец результата, создавая отношения моделей в моделях?