laravel - 遍历数组,并通过添加计数器更改项目详细信息
问题描述
我是 Laraver 的新手,我正在使用 Eloqunet 模型... deleteItem 函数,使用 offer_in 和 nbr 删除项目...当删除项目时,我想从具有相同 offer_id 的每个项目中添加一个新的 nbr,从 1 开始。我需要定义计数器= 1,每个项目加1..我不知道如何编写一个for循环或foreach循环,它通过选定的项目,并用计数器的相应值更改'nbr'?
我的代码是:
public function deleteItem(Request $request, $offer_id, $nbr) {
$item = OfferItem::select('id', 'offer_id', 'nbr', 'product', 'quantity', 'item_price', 'item_tax', 'item_total')
->where('offer_id', $offer_id)
->where('nbr', $nbr)
->first();
$item->delete();
//select new items for offer, after deleting item
$items = OfferItem::select('id', 'offer_id', 'nbr', 'product', 'quantity', 'item_price', 'item_tax', 'item_total')
->where('offer_id', $offer_id)
->get();
//todo
return response()->json($item);
}
解决方案
您可以像这些示例中那样纯粹在 SQL 中实现这一点。
你可以通过以下方式使用 Laravel 实现你想要的:
public function deleteItem(Request $request, $offer_id, $nbr) {
OfferItem::query()
->where('offer_id', $offer_id)
->where('nbr', $nbr)
->delete();
// Select new items for offer, after deleting item
$items = OfferItem::where('offer_id', $offer_id)
->where('nbr', '>', $nbr)
->get()
->sortBy('nbr')
->map(function ($item) use ($nbr) {
$update = [
'id' => $item->id,
'nbr' => $nbr,
];
$nbr++;
return $update;
});
OfferItem::query()->update($items);
return response()->json($item); // It is not clear from your question what you
// are trying to return here. Why would you
// return a deleted item?
}
推荐阅读
- matlab - Matlab访问动态变量
- javascript - 如何在使用 https 的网站中通过 http 发送 post 请求?
- mongodb - 更新 mongodb 文档的复杂嵌套数组中的元素?
- java - 默认按钮不会导致 JFormattedTextField 提交当前编辑
- xml - XML Lint 解析 XML
- c++ - Eclipse 只显示共享库函数的原型,而不是定义
- bash - Bash 脚本问题 - 函数。他们为什么不工作?
- laravel - How to OrderBy HasManyThrough Relation 特定列
- processing - P3D 草图在 Python 处理模式下不起作用
- r - 如何修剪r中的向量?