首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Laravel共享主机ajax删除

Laravel共享主机ajax删除
EN

Stack Overflow用户
提问于 2018-06-06 06:59:16
回答 1查看 69关注 0票数 0

出于测试目的,我在免费主机上托管了我的网站,除了Ajax删除,一切都运行得很好。当我单击delete时,delete函数执行,所有内容都被删除,但由于某种原因,它返回500错误。在本地,它工作起来没有问题。

代码语言:javascript
复制
Route::delete('/admin/deleteRound', 'AdminCyclesController@deleteRound')->name('admin.deleteRound');  

代码语言:javascript
复制
$.ajax({
    type: "POST",
    url: urlDeleteRound,
    data: {cycle_id: cycle_id, round: round, _token: token, _method: 'delete'}
}).success(function (response) {.....});

我尝试了所有我能在网上找到的东西,但都没有成功。有没有办法解决这个问题,或者至少有办法找出问题所在?

已编辑- .log

我不知道这是什么意思。

local.ERROR: SQLSTATEHY000:一般错误(SQL:从cycle_team删除where cycle_team.cycle_id=9和cycle_team.round=1) {"userId":1,"email":"xxxxxx@gmail.com","exception":"object

编辑2-代码执行删除

代码语言:javascript
复制
public function deleteRound(Request $request){

    $round=$request['round'];
    $id=$request['cycle_id'];

    DB::select("DELETE FROM `cycle_team` where cycle_team.cycle_id=$id and cycle_team.round=$round");

    $teams = DB::select("SELECT teams.id, teams.title,sum(ct.points) + sum(ct.is_winner) + sum(ct.is_over) as points, sum(ct.points) + sum(ct.is_winner) + sum(ct.is_over)-Min(ct.points + ct.is_winner + ct.is_over) as minpoints, COUNT(teams.id)-1 as number FROM `teams`INNER JOIN cycle_team as ct on teams.id =ct.team_id INNER JOIN cycles as c on c.id = ct.cycle_id where ct.cycle_id =$id > 0 GROUP BY ct.cycle_id, ct.team_id, teams.title, teams.id order by points desc");

    return response()->json(['teams'=>$teams]);
}

解决方案

代码语言:javascript
复制
 DB::select("DELETE FROM `cycle_team` where cycle_team.cycle_id=$id and cycle_team.round=$round")

制造问题,使用Builder解决问题

代码语言:javascript
复制
DB::table('cycle_team')->where('cycle_id', id)->where('round', $round)->delete();
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-06 08:04:11

您正在使用DB::select(),它在幕后默认使用一个只读的 PDO实例。由于DELETE是写入操作,因此会发生一般错误。

考虑使用DB::delete()方法而不是DB::select()方法,因为这是您正在执行的操作类型。

您还可以使用DB::statement(),它根据查询的成功返回一个布尔值;如果您想要查询所影响的行数,则可以使用DB::affectingStatement()

或者,按照注释中的建议,使用查询生成器生成删除查询。

代码语言:javascript
复制
DB::table('cycle_team')
    ->where('cycle_id', $id)
    ->where('round', $round)
    ->delete();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50710062

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档