You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Laravel中通过AJAX删除指定$key对应的real_person数据?

解决方案

1. 给删除按钮添加必要的数据属性

先修改模板里的删除按钮,把对应real_person的ID(或关联的party_id与key)存入data属性,让JS能获取到要删除的目标标识:

<a class="cursor-pointer text-secondary">
    <i class="fa-solid fa-2x fa-trash" data-real-id="{{ $real->id }}"></i>
</a>

2. 修正JS逻辑,动态标记待删除项

原JS的问题在于没有提前创建delete_parties[]输入框,且val()会覆盖已有值。改为动态创建hidden输入并追加到表单中,实现多删除项的收集:

$(document).on('click', '.fa-trash', function() {
    // 获取要删除的real_person ID
    const realId = $(this).data('real-id');
    
    // 创建hidden输入,将ID存入delete_parties数组
    const deleteInput = $('<input>')
        .attr('type', 'hidden')
        .attr('name', 'delete_parties[]')
        .val(realId);
    
    // 把输入追加到表单内
    $('form').append(deleteInput);
    
    // 移除当前DOM元素
    $(this).closest('.col-lg-6').remove();
});

3. 控制器中处理删除请求

在updateAndCreate方法中,直接获取delete_parties参数并执行删除操作:

public function updateAndCreate(Request $request, $userId)
{
    // 获取所有待删除的real_person ID
    $deleteIds = $request->input('delete_parties', []);
    
    // 批量删除对应记录
    if (!empty($deleteIds)) {
        \App\Models\RealPerson::whereIn('id', $deleteIds)->delete();
    }
    
    // 处理其他表单更新/创建逻辑...
}

可选优化:按party关联删除

如果需要通过party_id和key定位删除项,可调整如下:

  • 模板按钮:
<i class="fa-solid fa-2x fa-trash" data-party-id="{{ $party->id }}" data-key="{{ $key }}"></i>
  • JS代码:
const partyId = $(this).data('party-id');
const key = $(this).data('key');
const deleteInput = $('<input>')
    .attr('type', 'hidden')
    .attr('name', 'delete_parties[]')
    .val(JSON.stringify(['party_id' => partyId, 'key' => key]));
  • 控制器处理:
foreach ($request->input('delete_parties', []) as $itemStr) {
    $item = json_decode($itemStr, true);
    $party = \App\Models\Party::findOrFail($item['party_id']);
    $realPerson = $party->reals->get($item['key']);
    $realPerson?->delete();
}

内容的提问来源于stack exchange,提问作者Asharf Khosravi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 21:35:25