【发布时间】:2018-08-07 09:05:08
【问题描述】:
这是我的产品型号
public function orders(){
return $this->hasMany(Order::class);
}
这是我的订单模型
public function user(){
return $this->belongsTo(User::class);
}
public function product(){
return $this->belongsTo(Product::class);
}
还有我的订单表结构
这是我目前的回复(我使用的是订单模型)。
{
id: 11,
quantity: 2,
customer: {
id: 6,
name: "saging",
email: "saging@gmail.com",
role_id: 3,
},
items: {
id: 7,
name: "Pellentesque semper",
description: "raesent sit amet elementum purus. ",
price: "72.21",
cover_image: "7CPVS7yjqba9iJ7J.jpg",
}
},
{
id: 12,
quantity: 2,
customer: {
id: 6,
name: "saging",
email: "saging@gmail.com",
role_id: 3,
},
items: {
id: 3,
name: "Donec nec mattis ligula",
description: "Pellentesque semper, augue at aliquet tincidunt",
price: "33.21",
cover_image: "ZJbbzjPwDXrcbkwi.jpg",
}
}
我目前使用的代码是
$products = Order::with('user','product');
return OrdersResource::collection($products->paginate(5));
我使用我的Order Model 中的方法列出products and customer
我想要的输出是这样的
{
id: 12,
quantity: 2,
customer: {
id: 6,
name: "saging",
email: "saging@gmail.com",
role_id: 3,
},
items: [
{
id: 3,
name: "Donec nec mattis ligula",
description: "Pellentesque semper, augue at aliquet tincidunt",
price: "33.21",
cover_image: "ZJbbzjPwDXrcbkwi.jpg",
},
{
id: 7,
name: "Pellentesque semper",
description: "raesent sit amet elementum purus. ",
price: "72.21",
cover_image: "7CPVS7yjqba9iJ7J.jpg",
}
]
}
这是我的 OrderResource 代码
$sub_total = $this->quantity * $this->product->price;
$discount = round((10 / 100) * $sub_total, 2);
$total = $sub_total - $discount;
return [
'id' => $this->id,
'quantity' => $this->quantity,
'address' => $this->address,
'sub_total' => $sub_total,
'discount' => $discount,
'total_price' => $total,
'created_at' => Carbon::parse($this->created_at)->format('F d, Y h:i:s A'),
'customer' => $this->user,
'items' => $this->product,
];
我的关系有问题吗?我是 laravel 的新手,雄辩的关系是我总是跳过的部分,因为我很困惑。但现在我必须面对它。
【问题讨论】:
-
我想你错过了这里的 ID
id: 11,是 12 不?请添加 OrdersResource 代码:) -
已编辑......
-
有什么问题?您在 Order 和 Product 之间添加了 belongsTo 关系,那么它将始终是一个项目
-
哦,我试过belongsToMany,但我也很困惑,因为我不知道什么是数据透视表我不知道从哪里开始哈哈
-
我想要的是按顺序显示许多项目