Jquery 当响应为json时,Laravel响应ID会更改,但当转储数据时,ID就在那里
我试图在Laravel中使用ajax请求,它根据select2输入搜索记录。现在,我在获取数据后转换数据,只是为了加密ID。下面是我获取记录并将其ID转换为加密的方法Jquery 当响应为json时,Laravel响应ID会更改,但当转储数据时,ID就在那里,jquery,json,ajax,laravel,jquery-select2,Jquery,Json,Ajax,Laravel,Jquery Select2,我试图在Laravel中使用ajax请求,它根据select2输入搜索记录。现在,我在获取数据后转换数据,只是为了加密ID。下面是我获取记录并将其ID转换为加密的方法 public function autocompletePedigree($subdomain, $type = null) { $q = request()->get('q'); $sex = NULL; if (!is_null($type)) {
public function autocompletePedigree($subdomain, $type = null)
{
$q = request()->get('q');
$sex = NULL;
if (!is_null($type)) {
$sex = $this->sexesRepository->make()->where('name', $type)->first(['id'])->id;
}
$results = $this->dogsRepository->search($q, $sex);
$results->getCollection()->transform(function ($value) {
$value->id = encrypt($value->id);
return $value;
});
return $results;
}
现在,结果包含一个狗名和id,当我使用dd($results)
时,id会被转换并更正,下面是一个示例
#attributes: array:2 [▼
"id" => "eyJpdiI6IlN5YXdzT3hReEc2bnczRGM5YzV1eGc9PSIsInZhbHVlIjoiZ0NpaTRGWjNmS1ZEQjVZcGFZeWJRdz09IiwibWFjIjoiMThmNmQ5YmE5ZDI1MDg4OTZhMmExMTlmNzM0ZGU3ZDRhNzg0OGFhNzM2OTViYzVkN2QxZTUzMzMwMWY4ZDdhYiJ9"
"text" => "Dog name"
]
但是当我使用return response()->JSON($results)
切换到JSON时,它会返回
"data":[
{
"id":0,
"text":"Dog name"
},
{
"id":0,
"text":"Doggy name"
}
我不明白为什么它会将ID变为0。这是某种JSON清理过程吗?有人能帮我把加密的ID保存在JSON响应中吗?经过一点挖掘,我发现它被自动转换成整数,这引起了一点骚动。因此,我通过添加
public$incrementing=false解决了这个问题代码>到狗
模型经过一点挖掘,我发现它被自动转换成整数,这引起了一点骚动。因此,我通过添加public$incrementing=false解决了这个问题代码>到狗
模型对于其他好奇(比如我)为什么会发生这种情况的人:
他正在更改模型主键的类型。当他(或者在本例中是JsonResponse
)调用模型上的toJson()
时,它尝试将主键(手动更改为string
)转换回其原始值(int
),因为(int)“eyJpdiI6IlN…”
等于0
他的键也是0
发生这种情况是因为主键实际上是模型的:
public function getCasts()
{
if ($this->getIncrementing()) {
return array_merge([$this->getKeyName() => $this->getKeyType()], $this->casts);
}
return $this->casts;
}
。。。当模型被序列化为数组(后来又被转换为JSON)时,属性就会被转换。对于其他好奇(比如我)为什么会发生这种情况的人:
他正在更改模型主键的类型。当他(或者在本例中是JsonResponse
)调用模型上的toJson()
时,它尝试将主键(手动更改为string
)转换回其原始值(int
),因为(int)“eyJpdiI6IlN…”
等于0
他的键也是0
发生这种情况是因为主键实际上是模型的:
public function getCasts()
{
if ($this->getIncrementing()) {
return array_merge([$this->getKeyName() => $this->getKeyType()], $this->casts);
}
return $this->casts;
}
。。。当模型被序列化为数组(稍后再转换为JSON)时,属性被强制转换。你也可以共享模型吗?@petersowah我可以向你保证,模型和其他一切都是正确的。只有当我尝试切换到jsonShare模型时才会发生这种情况,拜托,你似乎有一些规则如何转换到jsonJust添加了整个模型添加了这个模型并将其扩展到了可以共享模型吗?@petersowah模型和其他一切都是正确的,我可以向你保证。这只发生在我尝试切换到jsonShare模型时,请注意,您似乎有一些规则如何转换为jsonJust添加了整个模型添加了该模型并对其进行了扩展