【发布时间】:2020-01-20 17:01:45
【问题描述】:
我有一个非常普通的表结构,如下所示:
Order
,----------,
|id |
|order_num |
`----------`
OrderItem
,---------,
|id |
|order_id |
|item_id |
`---------`
Item
,----------,
|id |
|item_name |
|price |
`----------`
经典的Order 表、Item 表,并通过OrderItem 表将项目添加到订单中。但是,我想做的是从 Order 模型中获取由 Item 的 item_name 列排序的 OrderItem 记录列表。
class Order extends Model
{
public function order_items()
{
return $this->hasMany('App\OrderItem'); <-- How can I get this ordered by the item name?
}
}
所以它有点像->orderThrough(如果存在这样的东西的话)。有没有一种干净的方法可以做到这一点?
【问题讨论】:
-
Order::find($x)->order_items->orderBy('xxx');或在关系的定义中
-
这能回答你的问题吗? Order By on HasMany relationship Laravel 5
-
应该有
...order_items()->...。请参阅documentation。 -
不完全是,因为我要通过关系增加一层,而不是直接在子表上。这甚至可能不可能像我那样做。我不确定。
-
从 Order 模型中,我想检索 OrderItem 记录,但我希望它们按项目名称排序。所以这是一种奇怪的嵌套事情。
标签: php laravel eloquent model