laravel 如何在一个有说服力的模型/ livewire组件中添加删除性别的限制?[关闭]

zhte4eai  于 2023-05-19  发布在  其他
关注(0)|答案(2)|浏览(139)

已关闭,此问题需要details or clarity。目前不接受答复。
**想改善这个问题吗?**通过editing this post添加详细信息并澄清问题。

昨天关门了。
Improve this question
我正在开发一个应用程序,它将性别作为标准化实体,并在用户实体中使用性别ID。所以user1的gender_id = 1。如何指定如果性别ID在其他地方使用,则不能删除此性别?
我试着在网上搜索,但我没有找到任何有用的东西。

public function deleteGender(Gender $gender)
{
    $gender->delete();
    $this->dispatchBrowserEvent('swal:toast', [
    'background' => 'success',
    'html' => "The gender <b><i>{$gender->gender_type}</i></b> has been deleted",
    ]);
}

这就是我当前的删除方法。

u3r8eeie

u3r8eeie1#

exists方法的帮助下检查用户中是否存在性别,

public function deleteGender(Gender $gender)
{
    $isGenderExists = User::where("gender_id",$gender->id)->exists();
    if($isGenderExists){
        $this->dispatchBrowserEvent('swal:toast', [
            'background' => 'error',
            'html' => "your restriction message goes here....",
        ]);
    }else{
        $gender->delete();
        $this->dispatchBrowserEvent('swal:toast', [
            'background' => 'success',
            'html' => "The gender <b><i>{$gender->gender_type}</i></b> has been deleted",
        ]);
     }
}
bksxznpy

bksxznpy2#

这正是关系数据库专门用来促进的事情。您不应该尝试在PHP中解决这个问题,在PHP中,除非您非常小心地在正确的时间获得正确的锁,否则几乎肯定会引入错误。
相反,您应该通过数据库中的ON DELETE RESTRICT(具体语法可能与您的数据库不同)约束来解决这个问题,这是 * 保证 * 数据库不会进入无效状态的唯一方法。

相关问题