Красноречивый, Удалить не работает, Laravel 5

я работаю над веб-приложением, использующим eloquent и laravel 5. Проблема в том, что я пытаюсь удалить строку таблицы с именем «Ponderacion», но когда я отправляю запрос на удаление ajax, сервер останавливается (он останавливает выполнение маршрутизируемой функции, но сервер продолжает работать) в строке, где удаление, без каких-либо ошибок.

Вот модель Ponderacion:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Ponderacion extends Model{
protected $table = 'Ponderacion';
protected $fillable = array('ponderacionidearea', 'ConfiguracionDeExamenifconf', 'peso');
public $timestamps = false;
}

Вот функция в контроллере:

public function deleteConfig(Request $request){
error_log('deleting');
$s_area = Area::where('nombre', '=', $request->input('s_area'))->first();
error_log(count($s_area->Configuracion->first()->Ponderacion));
//DB::statement('delete from Ponderacion where idponderacion = 22');
foreach ($s_area->Configuracion->first()->Ponderacion as $ponderacion){

error_log($ponderacion->peso);
try{
$ponderacion->delete();
}catch(Exception $e){
error_log('failure');
}
}
//$s_area->Configuracion->first()->Ponderacion->delete();
error_log('succesfully deleted');
$s_area->Configuracion->first()->delete();

}

Я могу успешно напечатать свойство «песо» ponderacion, но я не могу удалить его. У Ponderacion есть Foreign Keys для другой таблицы, но ни у одной другой таблицы нет ссылки на Ponderacion. Я могу удалить строку Ponderacion с помощью оператора DB ::, но это небезопасно. Успешное удаление никогда не отображается на консоли.

Заранее спасибо.

1

Решение

Для тестирования AJAX я всегда предпочитаю сначала тестировать непосредственно с помощью запроса GET, где это возможно, а затем накладывать слой на AJAX POST, как только я знаю, что основной код работает.

В этом случае сервер, скорее всего, выбрасывает Fatal Error, который затем вернет ошибку 500 для запроса AJAX и никакой дополнительной информации. Есть хороший вопрос SO, который касается обнаружения фатальных ошибок.

Я бы проверил ваши включения в ваш класс. В Laravel 5 пространство имен по умолчанию не является глобальным пространством имен для контроллеров. Вам нужно будет добавить \ до Exception или добавить use Exception в начало вашего файла класса.

Также два совета:

  • использование SoftDeletes на вашей модели. Лучше отслеживать и проверять записи базы данных, если вы никогда не удаляете строку. Место для хранения БД действительно дешево, и Laravel автоматически пропускает удаленные строки при запросах.
  • Используйте IDE для разработки. Многие из этих ошибок могут быть обнаружены перед выполнением хорошим компилятором.
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]