я работаю над веб-приложением, использующим 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 ::, но это небезопасно. Успешное удаление никогда не отображается на консоли.
Заранее спасибо.
Для тестирования AJAX я всегда предпочитаю сначала тестировать непосредственно с помощью запроса GET, где это возможно, а затем накладывать слой на AJAX POST, как только я знаю, что основной код работает.
В этом случае сервер, скорее всего, выбрасывает Fatal Error
, который затем вернет ошибку 500 для запроса AJAX и никакой дополнительной информации. Есть хороший вопрос SO, который касается обнаружения фатальных ошибок.
Я бы проверил ваши включения в ваш класс. В Laravel 5 пространство имен по умолчанию не является глобальным пространством имен для контроллеров. Вам нужно будет добавить \
до Exception
или добавить use Exception
в начало вашего файла класса.
Также два совета:
Других решений пока нет …