laravel - 我是多对多关系,获取数据透视表的ID
问题描述
我在多对多关系中有以下模型:
class Event extends Model
{
public function positions() {
return $this->belongsToMany(Position::class, 'position_events');
}
}
class Position extends Model
{
public function events() {
return $this->belongsToMany(Event::class, 'position_events');
}
}
class PositionEvent extends Model
{
public function position() {
return $this->hasOne(Position::class, 'id', 'position_id');
}
public function event() {
return $this->hasOne(Event::class, 'id', 'event_id');
}
}
该position_events
表如下所示:
id | event_id | position_id
如果$event
是 的一个实例Event
,我可以得到相关职位:
$event->positions;
对于每个相关职位,这为我提供了以下内容:
{"id":4,"name":"Striker","created_at":"2019-04-02 16:19:57","updated_at":"2019-04-02 16:19:57","pivot":{"event_id":27,"position_id":4}}
注意pivot
元素。它只有event_id
和position_id
作为属性,这些是表中的列position_events
。我如何让它也拥有该id
表中的列?
解决方案
您是否尝试过使用withPivot()
,例如:
$this->belongsToMany(Position::class, 'position_events')->withPivot('id');
推荐阅读
- visual-studio - Visual Studio - 自动在项目中包含新文件
- r - R:data.table 左外连接函数未更新
- python - 从数据框创建列表
- mysql - 如何持续监控 mysql 数据库表中的新条目,以及当找到新条目时,它会使用 cron 作业触发批处理文件 jst aftr tht
- xml - 尝试添加整数时,SoapUI 属性将值转换为浮点数
- c# - 如何在 C# 中定义 hololens CoordinateSystem?
- c# - 如何(反)序列化接口的模拟?
- c# - 如何通过使用 linq C# 比较两个列表来获取更新的记录
- c# - 无法保护 Mvc5 中的路由
- c# - 如何使用 Default.htm 创建 WCF 服务项目