Laravel 如何删除与单打的两个关系

Laravel 如何删除与单打的两个关系,laravel,eloquent,Laravel,Eloquent,我想用数组列表删除两个表数据。 Favorites id作为主键,FavoriteProducts favorite_id是Favorites id的外键 Favorites::whereNotIn('id',array_keys($request->edit_fav_list)) ->where('user_id',$this->user)->delete(); FavoriteProducts::whereNotIn('favorite_id

我想用数组列表删除两个表数据。 Favorites id作为主键,FavoriteProducts favorite_id是Favorites id的外键

 Favorites::whereNotIn('id',array_keys($request->edit_fav_list))
           ->where('user_id',$this->user)->delete();
 FavoriteProducts::whereNotIn('favorite_id',array_keys($request->edit_fav_list))
                   ->where('user_id',$this->user)->delete();

如果您使用的是MySQL,您可以在外键中添加“ON DELETE CASCADE”。把这里放在你最喜欢的产品里

$table->foreign('favorite_id')->references('id')->on('favorites')->onDelete('cascade');
您还可以在收藏夹模型中添加删除方法。先删除关系,然后再删除父级

public function delete() {
    $this->favorite_products()->delete();
    parent::delete();
}

您可以在迁移中使用mysql on-delete约束。如果($favorites=favorites::whereNotIn('id',array_key($request->edit_fav_\u list))->where('user_id',$this->user)->get()){$favorites->each->delete();}我已经对此进行了测试,但它只删除了favorites模型数据。公共函数delete(){$this->favorite_products()->delete();parent::delete()}您必须将此关系放在您最喜爱的模型中favorite_products是的,我已添加,但favorite_products无法删除。收藏夹::whereNotIn('id',array_key($request->edit_fav_list))->where('user_id',$this->user)它将获得多个记录,我想我必须在delete()函数中的模型中使用foreach。