我正在使用axios发布到我的api中间件,包括参数。但是,当我尝试通过提交表单来更新数据库时,使用chrome中的网络工具获得了状态200
,但是我的数据库没有更新。
这是控制器代码:
public function update(Request $request, $id)
{
//
Mock::find($request['id']);
$subject = $request['subject'];
return Mock::where($subject, $subject)->update([
$subject => $request['list'],
]);
}
这是vue方法:
updateDatabase()
{
// this goes to the api.php middleware in the routes directory
let myJSON = JSON.stringify(questionsList);
axios.post('api/mock',
{
id: 1,
subject: 'english',
list: myJSON
})
},
答案 0 :(得分:1)
检查您的update
方法:
public function update(Request $request, $id)
{
// ...
return Mock::where($subject, $subject)->update([ // <---------
$subject => $request['list'], // <-------
]);
// ...
}
在where
子句中,第一个参数是列名,而不是值。更新属性时也是如此。检查这一行:
Mock::where($subject, $subject)->/** */
执行此操作:
Mock::where('subject', $subject)->/** */
顺便说一句,我没有用您的方式来获取请求数据,但是如果它返回了null
值,请尝试以下方法:
$subject = $request->get('subject');
最后,当执行update
操作时,结果是boolean
,而不是更新的记录。因此,如果您希望返回更新的对象,请执行以下操作:
public function update(Request $request, $id)
{
Mock::find($id);
$mock = Mock::where('subject', $subject)->first();
$mock->update(['subject' => $request->get('list')]);
return $mock->fresh();
}
答案 1 :(得分:0)
所有问题都是update
函数
public function update(Request $request, $id)
{
//
$mock = Mock::find($request->id);
return $mock->update([
'subject' => $request->subject,
'list' => $request->list
]);
}
或者也许
public function update(Request $request, $id)
{
return Mock::where('subject', $request->subject)->update([
'list' => $request->list,
]);
}