Encryption Laravel返回加密的id,该id将被0覆盖

Encryption Laravel返回加密的id,该id将被0覆盖,encryption,response,laravel-6,Encryption,Response,Laravel 6,我试图实现的是,我希望返回加密的id,但函数会将其更改为0,而不是加密的值。我制作了一个用于加密id的助手函数,通过引用传递 if (! function_exists('encryptID')) { /** * Generate the URL to a controller action. * * @param $data * @param array $keys */ function encryptID(&$dat

我试图实现的是,我希望返回加密的id,但函数会将其更改为0,而不是加密的值。我制作了一个用于加密id的助手函数,通过引用传递

if (! function_exists('encryptID')) {
    /**
     * Generate the URL to a controller action.
     *
     * @param $data
     * @param array $keys
     */
    function encryptID(&$data = [], $keys = [])
    {
        // if(empty($keys)) $keys = ['id'];
        foreach($data as &$aData) {
            foreach ($keys as $aKey){
                if(isset($aData[$aKey])){
                    $aData[$aKey] = encrypt($aData[$aKey]);
                    $aData['_' . $aKey] = encrypt($aData[$aKey]);
                }
            }
        }
    }
}
在控制器中


    /**
     * @return mixed
     */
    public function index()
    {
        $tasks = $this->user->tasks()->get();

        encryptID($tasks, ['id']);

        return response()->apiSuccess($tasks);
    }
APIssuccess功能:

        Response::macro('apiSuccess', function ($responseData) {
            return Response::json([
                'success' => true,
                'body' => $responseData
            ]);
        });
api返回的结果是:

[
        {
            "id": 0,
            "title": "aaa",
            "description": "bbbbbb",
            "created_at": "2019-11-16 04:13:21",
            "updated_at": "2019-11-16 04:13:21",
            "_id": "eyJpdiI6InFweGtISm1jaE9vOFRuZDBuSUt5WVE9PSIsInZhbHVlIjoiOUQzSE1nWTc4MXM2UnRZQ3BScXNCQT09IiwibWFjIjoiNzM1YWU0Y2UwZjdkN2ZmNDM5MmYzYTRhNTI0YTI4ZDdjNTU5N2M1M2E4NWQyZGRiMzI4MzVjNGFiMjUxMmU4NiJ9"
        },
        {
            "id": 0,
            "title": "aaa",
            "description": "bbbbbb",
            "created_at": "2019-11-16 04:14:53",
            "updated_at": "2019-11-16 04:14:53",
            "_id": "eyJpdiI6ImtBeU92cWhuT05FS3NSYXErOCtKWUE9PSIsInZhbHVlIjoiMTRMN2tTV3Q3SGFzVWE0Q2ZOUXJlQT09IiwibWFjIjoiNzZjMThkMzViMDg4ODllNzk3ZTc3MWMzN2FiYzhmZTg2ZGI2MmM2Y2IzOWM5ZGQ4NTJiMDMwMTZjOTBjN2ZlMiJ9"
        }
]
如果我更改key=['title'],它将按预期工作

[
        {
            "id": 1,
            "title": "eyJpdiI6Ikc5bjNWc0pmd2Y2b1lvTFo3M25sVlE9PSIsInZhbHVlIjoieEpLRFwvTVUwckZkbjVCVGwrZ3pMMUE9PSIsIm1hYyI6IjA2NTJhYzNjMjBiMzliYmMyYTYxMjU4N2VmOGFhZTVmMGUzZjBhNzdlMTFjYTQ2YTFkNDA0ODVmMTljZmIzZTMifQ==",
            "description": "bbbbbb",
            "created_at": "2019-11-16 04:13:21",
            "updated_at": "2019-11-16 04:13:21",
            "_title": "eyJpdiI6Im5UYXErNFMzQjY3c3lHSzJ3eGJcLzFBPT0iLCJ2YWx1ZSI6ImpLc1dGWThBSUpKMllEb0VyY0RVcjdIZ3Y1OEZUdld1d3dUYmJmXC9wWkZjUWFyWDlqUnNvMVwvRDlDSjU4QkY2MFJtcGYzbFM0alJ0Z0NoQnZrU3pJRGc0cU1ta2lSaEl3VFk0QlZPSXFZTkVIdDd0ZGNKaGVkb3FmV3dOUlJyYlB4OEV0QlM3RXE0aDVYTFlxWGFWYmZ4UVNkUnBsTmo4eDdNSjloRUhSSUxkZEZoR3VMcldvZHJuczRkVWVrS0NOQWVCOXgwRnJFNjZjU2R4b3VWYUZyZUtkc2dtc0xoNFZzejdFcFpuTHBua1BSa2NMblJoZ2VUWnZhakk2UUNoWkNNZGlRTnpHMHZpcDVqMGg2QmNudWc9PSIsIm1hYyI6IjBiM2QyMTNlNDY4ZGEyMjA1MTVlNWZmMWRkY2IzZjU0MzIxYjVhZmQ4MTQ1OGQzYzkxZmMwMWFkYzg5MmQ4NTYifQ=="
        },
        {
            "id": 3,
            "title": "eyJpdiI6IkVIbVBGcWhCanA1UzBPRnZ1S2RXY1E9PSIsInZhbHVlIjoiN2JSWG1nV1B1Z0lFWEJHOVBPaDh5dz09IiwibWFjIjoiYWQwMzA0NmRhZDc4MzEwNTRhZTFhZWI2MThjYzAzZTg2ZWEzOTAyNzhmNTkwNDU3ZTA0ZWIzYjdhOTM3NWFlNSJ9",
            "description": "bbbbbb",
            "created_at": "2019-11-16 04:14:53",
            "updated_at": "2019-11-16 04:14:53",
            "_title": "eyJpdiI6InowVzM4WE9YaGdvZG9kY1Frdm9Jb1E9PSIsInZhbHVlIjoiaUN4UnVNcVVwQVNSSGYxbHFtWHMzeUhUNUJBTytwQXVDaUhqanJ6ZXJJa0NaV01CYzNcLzZKdFJHazdsQzNnSElnWnZIb0lQUzFlZ24zemZCWk54TmRrR0Q4NTlOV04zNnR5ZmptSXR0aWlKVEU0dGNNUFFHc1Q3NU4ybE5lOVZ3V245UTVYdDRWdHRac29XbmluUW9YckdpNzU2WmRGY2luMjVRN0xrRFkrODVTT0lrR1hIaVd2ZDNGak1MWDJwUTczRlwvYVE3RWZ5YVwvdE9BU3pGTjVndlNINlwvbUtGMmRLcU13ZUdHMlVHcUhjcTk2dlNIdVkwZlRXOWh0ZWpBMzdzb29DS2Y1WjF3ZWNFRmJQa205THJBPT0iLCJtYWMiOiJiZGU3ZjMwZmU5Zjk4YTE4MmNjODVhNTI1NWU1MTEyNGQxMDA3YjM5ZjMyM2FiY2VhOTVhZDViZTBkNmZmNzhiIn0="
        }
]
如您所见,所有ID都将更改为0,而不是加密值。我很困惑,为什么会这样。我制作了一个新密钥“_id”来测试加密是否成功,结果证明加密有效,但不知何故,将值重新分配给id不起作用

Laravel版本:6.2, PHP版本:7.2


有人知道原因吗?谢谢

id
字段设置为主键和“递增”。当您获得此属性时,它将被转换为整数,因为它是“递增”的,并且默认设置为整数

您可以设置
$incrementing=false以停止此特定强制转换

0 === (int) "some string"

如果我设置$incrementing=false,那么在将新行插入mysql数据库时是否需要指定id?否,数据库中的表设置为具有自动增量字段。。。这个变量只是告诉模型期望主键递增是的,它停止转换为整数