我有一个订单表,除其他外,还有一个订单类型:
表格:订单
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()
关系仍然返回一个集合,而我将直接需要当前模型。
而且我不确定那是否总体上是我在这里正确的方向。我将不胜感激任何建议和提示。