【发布时间】:2021-10-28 23:33:50
【问题描述】:
我有一个 API,其中将 PDF 添加到课程中并独立删除 PDF。在我的代码中,发生的情况是它删除了我要删除的 PDF 的 ID 的整行。我想要做的是通过 delete 方法使'lesson_pdf'为空。
这是我的控制器:
public function DeletePDF($id)
{
$lesson = LessonPDF::find($id);
if(is_null($lesson)){
return response()->json('Record not found!', 401);
}
$lesson->delete();
return response('PDF Deleted', 200);
}
我的课程PDF 模型:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class LessonPDF extends Model
{
public $table = "lesson";
use HasFactory;
protected $fillable = [
'lesson_pdf',
];
// protected $guarded = [];
}
我的 API 路由:
Route::delete('pdf-delete/{id}',[LessonPDFController::class,'DeletePDF']);
任何我弄错的建议和想法将不胜感激。 TIA
【问题讨论】:
-
请问,您想将
lesson_pdf保存为空 (null) 而不是从字面上删除该行? -
我想仅使用其课程 ID 删除 PDF 列,但在我的代码中发生的情况是,它会删除该 ID 的整行或数据。
-
delete将运行正常的SQL删除,因此您实际上将删除匹配的行或行...您只想执行$lesson->lesson_pdf = null;然后$lesson->save();,或$lesson->update(['lesson_pdf' => null]);,但您的lesson_pdf列必须是nullable,您是否在migration中写过? -
哦,我明白了。是的,我的 course_pdf 可以为空。所以我只需要使用update成null,这是POST方法吗?
-
不管是
POST、PUT、GET还是别的什么,你只需要调用save中的任何一个(之前将该字段更新为null,或使用update)