反应:仅发送数组
React: Send array only
我正在使用 React 和 axios 来获取和 post 简单列表中的数据。
在控制台的 post
上,我有以下内容:
{data: "", status: 200, statusText: "OK", headers: {…}, config: {…}, …}
config: {url: "http://localhost:8000/api/social/reorder/", method: "post", data: "{"order":[{"id":2,"order":1},{"id":1,"order":2},{"id":3,"order":3}]}", headers: {…}, transformRequest: Array(1), …}
data: ""
headers: {cache-control: "no-cache, private", connection: "close", content-type: "text/html; charset=UTF-8", date: "Thu, 22 Apr 2021 16:48:09 GMT, Thu, 22 Apr 2021 16:48:09 GMT", host: "localhost:8000", …}
request: XMLHttpRequest {readyState: 4, timeout: 0, withCredentials: false, upload: XMLHttpRequestUpload, onreadystatechange: ƒ, …}
status: 200
statusText: "OK"
__proto__: Object
表示新推送的数据为:
data: "{"order":[{"id":2,"order":1},{"id":1,"order":2},{"id":3,"order":3}]}"
我想问题是我只需要没有 order
的数组就可以让数据库更新信息 ,像这样:
[{"id":2,"order":1},{"id":1,"order":2},{"id":3,"order":3}]
所以我的table的每个字段都会收到一个对应于他们id
的新订单。
目前,数据是推送的,如您在控制台中所见,但未在数据表 中注册。所以发送的数据肯定是错误的,我怀疑是order
.
我的职能:
function handleChangeOrder() {
const items = Array.from(list);
let newSequence = [];
items.forEach((item, index) => {
newSequence.push({ id: item.id, order: index + 1 });
});
axiospost(newSequence);
}
async function axiospost(order){
try {
const response = await axios.post('http://localhost:8000/api/social/reorder/', {order});
return response.data;
} catch (error){console.error("Not able");}
}
我的后端控制器,如果有帮助的话:
public function reorder(Request $request)
{
$this->validate($request,['order'=>'required']);
$order = $request->input('order');
DB::transaction(function () use ($order){
foreach ($order as $value){
Social::find($value['id'])->update(['order'=>$value['order']]);
}
});
}
我的控制器语法有问题,因为数据正在传递到数据库,但语法有问题。
更新时,我应该使用 where
而不是 find
,如下所示:
DB::transaction(function () use ($order){
foreach ($order as $value){
Social::where('id', $value['id'])->update(['order' =>$value['order']]);
}
});
我正在使用 React 和 axios 来获取和 post 简单列表中的数据。
在控制台的 post
上,我有以下内容:
{data: "", status: 200, statusText: "OK", headers: {…}, config: {…}, …}
config: {url: "http://localhost:8000/api/social/reorder/", method: "post", data: "{"order":[{"id":2,"order":1},{"id":1,"order":2},{"id":3,"order":3}]}", headers: {…}, transformRequest: Array(1), …}
data: ""
headers: {cache-control: "no-cache, private", connection: "close", content-type: "text/html; charset=UTF-8", date: "Thu, 22 Apr 2021 16:48:09 GMT, Thu, 22 Apr 2021 16:48:09 GMT", host: "localhost:8000", …}
request: XMLHttpRequest {readyState: 4, timeout: 0, withCredentials: false, upload: XMLHttpRequestUpload, onreadystatechange: ƒ, …}
status: 200
statusText: "OK"
__proto__: Object
表示新推送的数据为:
data: "{"order":[{"id":2,"order":1},{"id":1,"order":2},{"id":3,"order":3}]}"
我想问题是我只需要没有 order
的数组就可以让数据库更新信息 ,像这样:
[{"id":2,"order":1},{"id":1,"order":2},{"id":3,"order":3}]
所以我的table的每个字段都会收到一个对应于他们id
的新订单。
目前,数据是推送的,如您在控制台中所见,但未在数据表 中注册。所以发送的数据肯定是错误的,我怀疑是order
.
我的职能:
function handleChangeOrder() {
const items = Array.from(list);
let newSequence = [];
items.forEach((item, index) => {
newSequence.push({ id: item.id, order: index + 1 });
});
axiospost(newSequence);
}
async function axiospost(order){
try {
const response = await axios.post('http://localhost:8000/api/social/reorder/', {order});
return response.data;
} catch (error){console.error("Not able");}
}
我的后端控制器,如果有帮助的话:
public function reorder(Request $request)
{
$this->validate($request,['order'=>'required']);
$order = $request->input('order');
DB::transaction(function () use ($order){
foreach ($order as $value){
Social::find($value['id'])->update(['order'=>$value['order']]);
}
});
}
我的控制器语法有问题,因为数据正在传递到数据库,但语法有问题。
更新时,我应该使用 where
而不是 find
,如下所示:
DB::transaction(function () use ($order){
foreach ($order as $value){
Social::where('id', $value['id'])->update(['order' =>$value['order']]);
}
});