gpt4 book ai didi

php - Eloquent ,删除不起作用,Laravel 5

转载 作者:行者123 更新时间:2023-11-30 22:47:20 24 4
gpt4 key购买 nike

我正在使用 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;
}

Controller 中的函数如下:

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 的属性“peso”,但我无法删除它。 Ponderacion 有其他表的外键,但没有其他表引用 Ponderacion。我可以使用 DB::statement 删除一行 Ponderacion,但这并不安全。控制台上永远不会显示成功删除。

提前致谢。

最佳答案

对于 AJAX 测试,我总是更喜欢在可能的情况下首先通过 GET 请求直接进行测试,然后在我知道底层代码有效后在 AJAX POST 上进行分层。

在这种情况下,服务器可能会抛出一个 fatal error ,然后会针对 AJAX 请求返回 500 错误,并且不会返回更多信息。 There is a good SO question that deals with catching Fatal Errors .

我会检查您的类(class)包含的内容。在 Laravel 5 中,默认命名空间不是 Controller 的全局命名空间。您需要在 Exception 之前添加 \ 或将 use Exception 添加到类文件的顶部。

还有两个提示:

  • 使用SoftDeletes在你的模型上。如果您从未真正删除一行,最好跟踪和审核您的数据库记录。 DB 存储空间非常便宜,Laravel 会在查询时自动跳过删除的行。
  • 使用 IDE 进行开发。一个好的编译器可以在运行时之前捕获其中的许多错误。

关于php - Eloquent ,删除不起作用,Laravel 5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29236768/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com