【发布时间】:2023-02-03 20:19:40
【问题描述】:
你好,我在 laravel 控制器中有这段代码,我收到一个错误的单个值:
public function store(Request $request)
{
$values = [];
$request->validate([
'order_number' => 'required',
'client_id' => 'required|exists:clients,id',
'description' => 'required',
'products' => 'required|exists:products,id',
'amount' => 'required',
]);
$order = Order::create($request->all());
foreach ($request->products as $product) {
$values[] = [
'order_id' => $order->id,
'product_id' => $product,
'amount' => $request->amount,
];
$amount = Product::find($product);
$total_value = $request->amount + $amount->amount; //the error happens here
$amount->update(['amount' => $total_value]);
}
$order->products()->attach($values);
return redirect('/')->with('msg', 'Order Saved successfully!');
}
除了 $request->amount 之外的所有值都作为数组出现,而不是作为一行中的单个值出现。这是我得到的错误:
不支持的操作数类型:数组+字符串
这是产品型号:
protected $fillable = [
'name',
'price',
'amount',
];
public function orders()
{
return $this->belongsToMany(Order::class);
}
这是dd($request->amount);
【问题讨论】:
-
请出示您的产品型号,以便我们了解
amount是如何定义的。还提供一个{{ dd($request->amount) }},这样我们就可以看到它包含的调试内容。从提供的代码看来,您似乎在遍历产品 ID,但只有一个金额值——这很可能是一个与 ID 长度相同的数组 -
@MatthewBradley 我添加了它,请现在检查
-
@MatthewBradley 和
for loop代码有效,但我被告知在这种情况下使用foreach
标签: laravel