我应该如何为需要引用透视表的表配置Laravel/OctoberCMS模型?

我应该如何为需要引用透视表的表配置Laravel/OctoberCMS模型?,laravel,eloquent,many-to-many,pivot-table,octobercms,Laravel,Eloquent,Many To Many,Pivot Table,Octobercms,我有3个内容类型,课程,地点和时间表。课程属于多个地点,地点也属于多个课程,但日程安排只能属于一个课程和一个地点。 我已经通过数据透视表Course_Location在课程模型和位置上建立了多对多关系。我的问题在于如何使用模型中的透视表连接/引用日程安排,或者我用了错误的方法 表结构 **course Table** id name **location Table** id name **course_location Pivot Table** id course_id location

我有3个内容类型,课程,地点和时间表。课程属于多个地点,地点也属于多个课程,但日程安排只能属于一个课程和一个地点。 我已经通过数据透视表Course_Location在课程模型和位置上建立了多对多关系。我的问题在于如何使用模型中的透视表连接/引用日程安排,或者我用了错误的方法

表结构

**course Table**
id
name

**location Table**
id
name

**course_location Pivot Table**
id
course_id
location_id

**schedule Table**
id
course_id
location_id
time
我会使用一个belongTo和时间表模型,以及一个hasOne和地点和课程模型

这适用于课程和地点

这是时间表

然后,您只需将course\u id和location\u id列添加到明细表中。然后,您可以通过日程表记录或您想要的方式访问课程记录和地点记录

实验性的——我从未尝试过

在本例中,您可以指定多对多关系表,即不同关系中的course_位置,这可能会起作用

class Course extends Model
{
    public $hasOne = [
        'schedule' => ['Author\Plugin\Models\Schedule', 'table' => 'course_location']
    ];
}

class Location extends Model
{
    public $hasOne = [
        'schedule' => ['Author\Plugin\Models\Schedule', 'table' => 'course_location']
    ];
}

class Schedule extends Model
{
    public $belongsTo = [
        'course' => ['Author\Plugin\Models\Course', 'table' => 'course_location'],
        'location' => ['Author\Plugin\Models\Location', 'table' => 'course_location']
    ];
}

谢谢你的回答@Pettis Brandon。我有一个关于$hasOne课程模式的问题。我能用$HASSHO吗?因为一门课程会有很多时间表。是的,我只是想你说过一个时间表会去一个地点和一个课程。所以你应该可以把它们改成hasMany,这样就好了。
class Course extends Model
{
    public $hasOne = [
        'schedule' => ['Author\Plugin\Models\Schedule']
    ];
}

class Location extends Model
{
    public $hasOne = [
        'schedule' => ['Author\Plugin\Models\Schedule']
    ];
}
class Schedule extends Model
{
    public $belongsTo = [
        'course' => ['Author\Plugin\Models\Course'],
        'location' => ['Author\Plugin\Models\Location']
    ];
}
class Course extends Model
{
    public $hasOne = [
        'schedule' => ['Author\Plugin\Models\Schedule', 'table' => 'course_location']
    ];
}

class Location extends Model
{
    public $hasOne = [
        'schedule' => ['Author\Plugin\Models\Schedule', 'table' => 'course_location']
    ];
}

class Schedule extends Model
{
    public $belongsTo = [
        'course' => ['Author\Plugin\Models\Course', 'table' => 'course_location'],
        'location' => ['Author\Plugin\Models\Location', 'table' => 'course_location']
    ];
}