0

编辑:移除勇敢的盾牌并不能纠正移动设备上的问题。对变量进行硬编码确实有效(即使转储变量显示变量与硬编码值相同)。

我有一部分控制器接收 url 中的路由,然后将变量保存到数据库中。这是通过获取路线完成的。下面是代码的混淆版本。

public function getDataAndSave($handle, $integer=null){

    $value = array('id' => $id,
            'integer' => $integer,
    );   

    $ValueToUpdate = Table::where('id', '=', $id)->first();

    if(isset($ValueToUpdate->id)){
        $ValueToUpdate->update([
            'integer' => isset($value['integer']) ? $value['integer'] : $ValueToUpdate->integer,
            'text' => isset($value['text']) ? $value['text'] : $ValueToUpdate->text
        ]);
    }
}

//Route looks like this
Route::get('update-value/{handle}/{integer?}', ['middleware' => [],
            'uses' => 'UpdateValueController@getDataAndSave',
            'as' => 'UpdateValue.view',
            'roles' => []]

问题 这在我笔记本电脑上的 Brave 和其他浏览器中运行良好,但如果我在移动设备上使用 Brave 浏览器运行它,$integer 值将保存为 0,而 text 值按预期保存。当我转储 $integer 或 $value 变量时,它会显示正确的整数,即使在我的手机上使用有问题的浏览器也是如此。如果我关闭 Brave Browser 的 Shields,它就可以工作。如果我硬编码一个整数值而不是像这样使用 $integer 更新整数变量:

    $ValueToUpdate->update([
        'integer' => isset($value['integer']) ? 5 : $ValueToUpdate->integer,
    ]);

正如我所料,它节省了 5 个。

我知道这是不好的做法,但我将这个特定的数据保存在获取路线(不是帖子)中。

有没有人经历过这样的事情并有解决方案?我打算将每个盾牌保护从勇敢切换到找到原因,但我想我会在这里问一下,以防将来有人遇到类似的问题。

此外,这是我保存在手机上后保存的对象的 vardump 的屏幕截图。您会看到我的收藏中有一个“更改”部分,它显示变量评分设置为 5,即使 eloquent 所做的保存为 0。
在此处输入图像描述

4

0 回答 0