Laravel Shared хостинг ajax удалить - PullRequest
0 голосов
/ 06 июня 2018

Я разместил свой сайт на бесплатном хостинге в целях тестирования, и все работает отлично, но Ajax удаляют.Когда я нажимаю на удалить, функция удаления проходит, и все удаляется, но по какой-то причине возвращает 500 ошибок.Локально работает без проблем.

Route::delete('/admin/deleteRound', 'AdminCyclesController@deleteRound')->name('admin.deleteRound');  

и

$.ajax({
    type: "POST",
    url: urlDeleteRound,
    data: {cycle_id: cycle_id, round: round, _token: token, _method: 'delete'}
}).success(function (response) {.....});

Я перепробовал все, что смог найти в Интернете, но безуспешно.Есть ли способ это исправить или хотя бы способ выяснить, в чем проблема?

РЕДАКТИРОВАНИЕ - .log

Я не знаю, что из этого сделать.

local.ERROR: SQLSTATE [HY000]: общая ошибка (SQL: DELETE FROM cycle_team, где cycle_team.cycle_id = 9 и cycle_team.round = 1) {"userId": 1, "email":" xxxxxx@gmail.com "," exception ":" [object] (Illuminate \ Database \ QueryException (код: HY000): SQLSTATE [HY000]: общая ошибка (SQL: DELETE FROM cycle_team, где cycle_team.cycle_id =9 и cycle_team.round = 1) в /storage/ssd5/708/6079708/laravel/vendor/laravel/framework/src/Illuminate/Database/Connection.php:664, исключение PDOException (код: HY000): SQLSTATE [HY000]:Общая ошибка в /storage/ssd5/708/6079708/laravel/vendor/laravel/framework/src/Illuminate/Database/Connection.php:332)

Правка 2 - удаление кода

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]);
}

РЕШЕНИЕ

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

создавало проблемы, использование Builder решает проблему

DB::table('cycle_team')->where('cycle_id', id)->where('round', $round)->delete();

1 Ответ

0 голосов
/ 06 июня 2018

Вы используете DB::select(), который по умолчанию использует экземпляр только для чтения PDO.Поскольку DELETE является операцией записи, возникает общая ошибка.

Рассмотрите возможность использования метода DB::delete() вместо DB::select(), так как это тип выполняемой операции.

Вы также можете использовать DB::statement(), который возвращает логическое значение, основанное на успешности запроса, или DB::affectingStatement(), если вы хотите количество строк, затронутых запросом.

Или, как предложено вкомментарии, используйте Query Builder для создания запроса на удаление.

DB::table('cycle_team')
    ->where('cycle_id', $id)
    ->where('round', $round)
    ->delete();
...