在使用mongodb保存(save())后,如何在laravel中获取最后插入文档的id?

3
这里有一段代码。
public function addItem(Request $req)
{
    $data = new UserModel();
    $data->Name = $req->name;
    $data->IP=$req->ip;
    $data->username=$req->username;
    $data->password=$req->password;
    $data->save();
    return response()->json($data);
}

你是否使用任何包来使用mongodb? - Jerodev
是的,我正在使用jenssegers/mongodb。 - Ammar Ali
3个回答

2

在这种情况下,$data 是一个对象,您可以通过以下方式访问 ID:

$id = $data->id;

谢谢回复,我已经测试过了,输出为undefined。 - Ammar Ali
undefined 是 JavaScript 的一种类型。你在 JavaScript 中遇到了错误吗?如果你在 $data->save() 之后立即放置 dd($data->id),请展示它确切地显示了什么? - Alexey Mezenin
当我从js中访问时,它会返回“未定义”。 - Ammar Ali
success:function()调用时,我正在附加表格,当我访问data.id时,它会返回未定义... - Ammar Ali

2

在 Laravel 中,保存或创建使用自增ID的新模型后,您可以通过访问对象的id属性来检索ID:

$data->save();
$id = $data->id;

0

正如我所问的,我没有得到这个id。我之所以出现这个错误是因为在插入后。如果你想要获取id,必须像data->_id这样获取,而不是data->id,因为我在ajax中获取的id是data.id,所以我写了以下代码:

$data = new UserModel();
$data->Name = $req->name;
$data->IP=$req->ip;
$data->username=$req->username;
$data->password=$req->password;
$data->save();
$data->id=$data->_id;
return response()->json($data);

而在 Ajax 中:

$.ajax({
        type: 'post',
        url: '/addItem',
        data: {
            '_token': $('input[name=_token]').val(),
            'name': $('#en').val(),
            'ip': $('#eip').val(),
            'username': $('#eun').val(),
            'password': $('#ep').val()
        },
        success: function(data) {
            if ((data.errors)){
                $('.error').removeClass('d-none');
                $('.error').text(data.errors.name);
            }
            else {
                $('.error').addClass('d-none');
                $('#table').append("<tr class='item" + data.id + "'><td>" + data.id + "</td><td>" + data.IP + "</td><td>" + data.Name + "</td><td>" + data.username + "</td><td>" + data.password + "</td><td><button class='edit-modal btn btn-info' data-id='" + data.id + "' data-name='" + data.Name + "' data-ip='" + data.IP + "' data-username='" + data.username + "' data-password='" + data.password + "'><span class='glyphicon glyphicon-edit'></span> Edit</button> <button class='delete-modal btn btn-danger' data-id='" + data.id + "' data-name='" + data.Name + "' data-ip='" + data.IP + "' data-username='" + data.username + "' data-password='" + data.password + "'><span class='glyphicon glyphicon-trash'></span> Delete</button></td></tr>");
            }
        },
    });

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接