在Eloquent中具有多个列的数据透视表

时间:2017-03-27 13:32:09

标签: laravel eloquent relationship

这是我的情景:

我有一个事件模型和一个舞台模型,一个事件可以有多个阶段,一个阶段可以分配给多个事件。多对多。问题是,一个阶段有一个sort_order,并且sort_order在每个事件中都可能不同。这就是为什么我将sort_order添加到数据透视表中而不是在例如舞台表中。

table:events_stages

| event_id | stage_id | sort_order |
------------------------------------
|    1     |     1    |      1     |
|    1     |     2    |      2     |
|    1     |     5    |      3     |

事情是,当我将舞台与舞台上的事件联系起来时, 我在StageController中做了类似的事情:

发送包含events: [1,2,3]sort_order: [1,1,2]

的帖子
    $relatedEvents = array();

    foreach ($request->events as $key => $event)
    {
        $relatedEvents[] = array(
            'event_id' => $relatedEventId,
            'sort_order' => $request->sort_order[$key]
        );
    }

    $stage->events()->sync(
        $relatedEvents
    );

但仅仅依靠帖子的顺序,看起来并不是一个好主意。

有没有人有更好的解决方案?

谢谢!

1 个答案:

答案 0 :(得分:0)

创建另一个模型(并将其用作枢轴)有时更好,而不是使用数据透视表本身。你有更多的控制权。我不确定你想要达到的目标。