基本上我有三个表,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();
我正在使用单一类别和多个城市。
如何删除相关记录。
SmsContentCategories::where('sms_content_id', $id)->delete();
SmsContentCity::where('sms_content_id', $id)->delete();
SmsContent::where('id', $id)->delete();
您不需要使用foreach。
SmsContentCategories::where('sms_content_id', $id)->delete();
SmsContentCity::where('sms_content_id', $id)->delete();
SmsContent::find($id)->delete();
只删除父模型。
SmsContent::find($id)->delete();
对于子表 Laravel文档用于删除级联。sms_content_cities
和SmsContentCategories
,添加ON DELETE CASCADE
条件,该条件将在父行被删除时自动从这些子表中删除行。您可以创建两个新的迁移文件,并在每个文件中添加此约束,然后执行php手工迁移$table->foreign('sms_content_id')->references('id')->on('sms_content')->onDelete('cascade');