Laravel:与时间相关的数据透视表

时间:2018-10-22 16:02:21

标签: php laravel relationship

以下情况

我有一个订单表,除其他外,还有一个订单类型:

表格:订单

id
order_type_id
...

现在,我可以通过order_articles数据透视表将商品添加到订单中,但这并不是重点。

表格:order_articles

order_id
article_id
amount
...

此外,我在订单类型和商品之间有一个数据透视表,用于定义不同订单类型的商品价格之类的东西。

表格:article_order_types

article_id
order_type_id
price
...

问题

现在,我有了新的要求,即商品订单类型的价格取决于时间,这基本上意味着此数据透视表需要两个开始和结束日期时间列。

到目前为止还不错,但是在那种情况下,我对Laravel关系有些挣扎。 目前,我想到的是以下关系:

Article.php(模型)

    public function orderTypes()
    {
        return $this->belongsToMany( OrderType::class , 'article_order_types' )->withPivot( [ 'price' , 'start' , 'end' ] );
    }


    public function currentOrderType()
    {
        return $this->orderTypes()->wherePivot( 'start' , '<=' , today() )->wherePivot( 'end' , '=' , null );
    }

这有几个问题,例如currentOrderType()关系仍然返回一个集合,而我将直接需要当前模型。 而且我不确定那是否总体上是我在这里正确的方向。我将不胜感激任何建议和提示。

0 个答案:

没有答案