Laravel根据相同的ID删除关系表中的记录

基本上我有三个表,sms_content、sms_content_cities 和 sms_content_categories。


我想从 sms_content 表中删除记录,通过从 sms_content 表中删除记录,应该从 sms_content_cities 和 sms_content_categories 表中删除记录。


这是我的代码:


$smsContentCategory = SmsContentCategories::where('sms_content_id', $id)->first();

        $smsContentCategory->delete();


        $smsContentCities = SmsContentCity::where('sms_content_id', $id)->first();


        foreach ($smsContentCities as $city){

            if(!empty($city)){

                $city->delete();

            }

        }


        $model = SmsContent::find($id);

        $model->delete();

我正在使用单一类别和多个城市。


如何删除相关记录。


芜湖不芜
浏览 110回答 3
3回答

慕娘9325324

SmsContentCategories::where('sms_content_id', $id)->delete();SmsContentCity::where('sms_content_id', $id)->delete();SmsContent::where('id', $id)->delete();

慕勒3428872

你不需要为它使用 foreach 。SmsContentCategories::where('sms_content_id', $id)->delete();SmsContentCity::where('sms_content_id', $id)->delete();SmsContent::find($id)->delete();

交互式爱情

仅删除父模型。SmsContent::find($id)->delete();对于子表sms_content_cities和SmsContentCategories,添加一个ON DELETE CASCADE条件,该条件将在删除父行时自动从这些子表中删除行。您可以创建 2 个新的迁移 文件并在每个文件中添加此约束并执行php artisan migrate。$table->foreign('sms_content_id')->references('id')->on('sms_content')->onDelete('cascade');关于删除级联的 Laravel 文档。
打开App,查看更多内容
随时随地看视频慕课网APP