Хорошо, я "вроде" решил свою проблему, но я не думаю, что это хорошая практика, и при этом я не думаю, что она оптимальна.Тем не менее, вот мое решение.Если кто-нибудь найдет лучший способ, пожалуйста, покажите мне.
// Program.php
[...]
/**
* Get the activities of the program.
*/
public function activities()
{
$program_activities = $this->hasMany('App\ProgramActivity')->get();
$activities = [];
foreach ($program_activities as $program_activity){
$className = $program_activity->activity_type;
$activity = $className::find($program_activity->activity_id);
$activities[] = $activity;
}
$activities = collect($activities);
return $activities;
}
Таким образом, когда я делаю $program->activities()
, я получаю все действия программы.
Даже если я думаю,есть лучший способ сделать это, или я думаю, что Laravel мог бы покрыть это одним из множества отношений, я не нашел ни одного.Если у вас есть лучший ответ, пожалуйста, напишите его =)