首页 > 解决方案 > 我是多对多关系,获取数据透视表的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_idposition_id作为属性,这些是表中的列position_events。我如何让它也拥有该id表中的列?

标签: laravel

解决方案


您是否尝试过使用withPivot(),例如:

$this->belongsToMany(Position::class, 'position_events')->withPivot('id');

推荐阅读