【发布时间】:2019-10-03 12:45:54
【问题描述】:
我正在尝试开发一个应用程序,人们可以在其中制作具有不同活动的自己的程序。到目前为止,我有 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 会列出我该会话的所有活动?
提前谢谢你。
【问题讨论】:
-
每种活动类型(观光、露营等)都有自己的模型吗?对我来说,感觉这应该有一个数据透视表,并且是一个 belongsToMany 关系。
-
确实每个 Activity 都有自己的模型。
-
我同意@GeorgeHanson,
activities()应该返回$this->belongsToMany('App\Activity')。当您执行$program->activities时,您应该获得与该程序相关联的所有活动。 -
但是,您的数据透视表的名称应该是
activity_program,而不是相反。 -
@KévinBibollet 不应该是 hasMany 吗?既然每个会话可以有很多活动?问题是我没有任何“活动”模型......因为每个活动都可能不同......它将是
$this->hasMany('App\Camping')。那么 Sightseeing 会发生什么?
标签: php laravel eloquent relationship