我应该如何为需要引用枢轴 table 的 table 配置 Laravel / OctoberCMS 模型?
How should I config Laravel / OctoberCMS Model for table that needs to reference pivot table?
我有 3 种内容类型、课程、地点和时间表。课程属于多个位置,位置也属于多个课程,但时间表只能属于一门课程和一个位置。
我已经通过枢轴 table (course_location) 在课程模型和位置上建立了多对多关系。我的问题在于如何使用模型中的枢轴 table 连接/引用时间表,或者我做错了。
表格结构
**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
class Course extends Model
{
public $belongsToMany = [
'locations' => [
Location::class,
'table' => 'course_location',
'key' => 'course_id',
'otherKey' => 'location_id',
'timestamps' => true,
],
];
}
class Location extends Model
{
public $belongsToMany = [
'courses' => [
Course::class,
'table' => 'course_location',
'key' => 'location_id',
'otherKey' => 'course_id',
'timestamps' => true,
],
];
}
我只想使用带有时间表模型的 belongTo
和带有位置和课程模型的 hasOne
。
这适用于课程和地点。
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']
];
}
然后您只需将 course_id
和 location_id
列添加到计划 table。然后,您可以通过日程记录或任何您想要的方式访问课程记录和位置记录。
实验性 - 我从未尝试过这个
您可以指定多对多关系 table 在这种情况下 course_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']
];
}
我有 3 种内容类型、课程、地点和时间表。课程属于多个位置,位置也属于多个课程,但时间表只能属于一门课程和一个位置。
我已经通过枢轴 table (course_location) 在课程模型和位置上建立了多对多关系。我的问题在于如何使用模型中的枢轴 table 连接/引用时间表,或者我做错了。
表格结构
**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
class Course extends Model
{
public $belongsToMany = [
'locations' => [
Location::class,
'table' => 'course_location',
'key' => 'course_id',
'otherKey' => 'location_id',
'timestamps' => true,
],
];
}
class Location extends Model
{
public $belongsToMany = [
'courses' => [
Course::class,
'table' => 'course_location',
'key' => 'location_id',
'otherKey' => 'course_id',
'timestamps' => true,
],
];
}
我只想使用带有时间表模型的 belongTo
和带有位置和课程模型的 hasOne
。
这适用于课程和地点。
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']
];
}
然后您只需将 course_id
和 location_id
列添加到计划 table。然后,您可以通过日程记录或任何您想要的方式访问课程记录和位置记录。
实验性 - 我从未尝试过这个
您可以指定多对多关系 table 在这种情况下 course_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']
];
}