我正在尝试开发一个应用程序,使人们可以通过不同的活动制作自己的程序。到目前为止,我有3个表,第一个是程序表:
// Program table
id - integer
title - string
然后我有一个program_activities表
// Program_Activities Table
id - integer
program_id - integer
activity_id - integer
activity_type - string
然后我有所有不同的活动(观光,露营等)
如何通过程序模型访问所有活动?像这样
// Program.php
Class Program extends Model
{
[...]
public function activities()
{
// retrurn all activities
}
}
这样$session->activities
会列出该次会议的所有活动吗?
谢谢。
答案 0 :(得分:0)
好的,所以我“很高兴”解决了我的问题,但是我真的不认为这是个好习惯,也不认为它是最佳的。尽管如此,这是我的解决方案。如果有人找到更好的方法,请告诉我。
// 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可能会用许多关系中的一种来覆盖这一点,但我没有发现任何关系。如果您有更好的答案,请发布=)