我想从另一个表中删除一条有外键的记录,但在执行该操作时,它给我留下了一些限制。我想知道是否有一种方法可以在不删除其他相关记录的情况下删除它。
public function destroy($id) {
try {
$exists = Orderdetail::where('id', $id)->exists();
if (!$exists) {
return response()->json(
[
'message' => 'Error al eliminar la orden',
'status' => 'error',
'data' => 'La orden por este id no existe',
], 500
);
}
// eliminar la orden
$order = Orderdetail::findOrFail($id);
$order->delete();
} catch (\Throwable $th) {
return response()->json(
[
'message' => 'Error al eliminar la orden',
'status' => 'error',
'data' => $th->getMessage(),
], 500
);
}
}
2条答案
按热度按时间guicsvcw1#
您可能希望更新外键以具有ON DELETE SET NULL条件。
wydwbb8l2#
在这种情况下,您可能需要将数据库引擎从InnoDB更改为MyISAM。但是要小心,使用MyISAM意味着没有数据完整性(例如关系约束)检查,这将成为数据库管理员和应用程序开发人员的责任和开销。