【发布时间】:2021-08-27 09:19:55
【问题描述】:
我正在尝试制作订单管理系统。为此,我为订单制作了 2 个表 orders 和 orderitems。
我想通过关系获取所选产品的价格。
这是我的订单控制器
public function store(Request $request)
{
$product = Product::all();
$order = Order::create([
'user_id' => $request->input('user_id'),
'total' => 1,
]);
$size = count(collect($request)->get('quantity'));
for ($i = 0; $i < $size; $i++) {
$orderitem = Orderitem::create([
'order_id' => $order->id,
'product_id' => $request->get('product_id')[$i],
'quantity' => $request->get('quantity')[$i],
'price' => $order->$product->price,
'total' => 3,''
]);
}
return redirect()->route('orders.index');
}
这是我的订单模型。
protected $table = "orders";
protected $fillable = [
'user_id',
'total',
];
public function user() {
return $this->belongsTo(User::class);
}
public function product() {
return $this->belongsTo(Product::class);
}
public function orderitem() {
return $this->hasMany(Orderitem::class);
}
这是我的产品模型
use HasFactory;
protected $table = "products";
protected $fillable = [
'name',
'price',
];
public function order() {
return $this->hasMany(Order::class);
}
这是我的产品表
这是我的订单表
这是我的订单项表
【问题讨论】:
-
所以,错误消息的有趣之处在于,它们可以准确地告诉您出了什么问题。因此,您在一个值为
null的变量上调用->price,而不是一个对象。所以从那里向后工作:如果一个变量为空,但你期望一个值,看看那个变量的值是在哪里分配的。