Php Laravel基于相同id删除关系表中的记录
基本上我有三个表,短信内容,短信内容城市和短信内容类别 我想从短信内容表中删除记录,通过从短信内容表中删除记录,记录应该从短信内容城市和短信内容类别表中删除 这是我的密码:Php Laravel基于相同id删除关系表中的记录,php,laravel,Php,Laravel,基本上我有三个表,短信内容,短信内容城市和短信内容类别 我想从短信内容表中删除记录,通过从短信内容表中删除记录,记录应该从短信内容城市和短信内容类别表中删除 这是我的密码: $smsContentCategory = SmsContentCategories::where('sms_content_id', $id)->first(); $smsContentCategory->delete(); $smsContentCities = SmsCon
$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\u content\u 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();
对于子表sms\u content\u cities
和SmsContentCategories
,在删除级联条件中添加一个,该条件将在删除父行时自动从这些子表中删除行。您可以创建两个新的迁移文件,并在每个文件中添加此约束,然后执行php artisan迁移
$table->foreign('sms_content_id')->references('id')->on('sms_content')->onDelete('cascade');
.您可能希望在表上执行此操作。您应该在表上设置级联关系。我希望城市和类别是父级here@iJamesPHP2怎么会?不知道OP是怎么设计的,但是,假设没有短信内容,城市和类别就不会首先出现。纯粹从表名中可以看出,城市和类别是对这些内容进行分组的一种方式,所有内容都会引用一个类别和一个类别city@iJamesPHP2这实际上取决于您希望如何逻辑连接这些表。我宁愿做一个短信内容,然后添加它的城市和它的类别。总之,从OP中澄清他的DB设计是什么样子。@FaisalKhan是sms\u内容
父表还是sms\u内容
城市
和sms\u内容
父表?@hmrneves如果可以利用这些约束,为什么要手动删除?