Encryption Laravel返回加密的id,该id将被0覆盖
我试图实现的是,我希望返回加密的id,但函数会将其更改为0,而不是加密的值。我制作了一个用于加密id的助手函数,通过引用传递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
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?否,数据库中的表设置为具有自动增量字段。。。这个变量只是告诉模型期望主键递增是的,它停止转换为整数