Laravel 5.2 的软删除级联

2023-11-27

我正在尝试在 Laravel 中实现软删除。

这是我的人际关系

Tournament ( hasMany ) CategoryTournament (hasOne) CategorySettings
Tournament ( hasMany ) CategoryTournament (belongsToMany) CategoryTournamentUser

所以,我用了这个答案这对我有很大帮助

现在,当我软删除锦标赛时,所有相关的类别锦标赛也会被删除。

但后来,我尝试递归地应用它,所以我在 CategoryTournament 模型中编写了相同的代码:

static::deleting(function($categoryTournament) {
        $categoryTournament->settings()->delete();
        $categoryTournament->users()->delete();
    });

但这段代码从未运行过。 我检查了我有要删除的设置和用户,但它们都不是软删除的......

我错过了什么???它应该有效!

EDIT:

现在,我正在尝试软删除用户,这只是多了一个级别:

User (HasMany) Tournament ( hasMany ) CategoryTournament (hasOne) CategorySettings

所以现在,当我软删除用户时,它会删除他的锦标赛,但不会再删除他的 CategoryTournaments,所以这不是配置错误。


在你的里面static boot你必须迭代你的方法toMany关系。

F A:

namespace App;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;

class Tournament extends Model
{
  use SoftDeletes;

  public function categoryTournament() {
    return $this->hasMany(CategoryTournament::class);
  }

  protected static function boot() {
    parent::boot();

    static::deleting(function($tournament) {
      foreach ($tournament->categoryTournament()->get() as $ct) {
        $ct->delete();
      }
    });
  }
}

其他文件应如下所示:

CategoryTournament.php

namespace App;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;

class CategoryTournament extends Model
{
  use SoftDeletes;

  public function tournament() {
    return $this->belongsTo(Tournament::class);
  }

  public function settings() {
    return $this->belongsTo(Settings::class);
  }

  protected static function boot() {
    parent::boot();

    static::deleting(function($categoryTournament) {
      var_dump('categoryTournament');
      $categoryTournament->settings()->delete();
    });
  }
}

Settings.php

namespace App;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;

class Settings extends Model
{
    use SoftDeletes;

    public function categoryTournament() {
      return $this->hasOne(CategoryTournament::class);
    }

    protected static function boot() {
    parent::boot();

    static::deleting(function($settings) {
      var_dump('settings');
    });
  }
}

Migration

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateTables extends Migration
{
  /**
   * Run the migrations.
   *
   * @return void
   */
  public function up() {

    Schema::create('tournaments', function (Blueprint $table) {
      $table->increments('id');
      $table->timestamps();
      $table->softDeletes();
    });

    Schema::create('settings', function (Blueprint $table) {
      $table->increments('id');
      $table->timestamps();
      $table->softDeletes();
    });

    Schema::create('category_tournaments', function (Blueprint $table) {
      $table->increments('id');
      $table->integer('tournament_id')->unsigned();
      $table->integer('settings_id')->unsigned();
      $table->timestamps();
      $table->softDeletes();

      $table->foreign('tournament_id')->references('id')->on('tournaments');
      $table->foreign('settings_id')->references('id')->on('settings');
    });
  }

  /**
   * Reverse the migrations.
   *
   * @return void
   */
  public function down() {

    Schema::drop('category_tournaments');
    Schema::drop('settings');
    Schema::drop('tournaments');
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Laravel 5.2 的软删除级联 的相关文章

  • 如何将图像从 Android 应用程序上传到网络服务器的特定文件夹中

    如何将图像从 android 移动到 Web 服务器上的指定文件夹 这是我的安卓代码 package com example bitmaptest import java io ByteArrayOutputStream import ja
  • PHP条件,如果当前页面,则链接突出显示[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我有一个带
  • Smarty 如果 URL 包含

    使用 Smarty 标签我想确定 URL 是否包含单词 例如 if smarty get page contains product php 我知道 contains 不存在 但是我怎样才能轻松地编写类似的东西来实现上述代码呢 所有 PHP
  • 选择一组数字以达到最小总数的算法

    给定 一组数字n 1 n 2 n 3 n x 还有一个数字M 我想找到最好的组合 n a n b n c n gt M 该组合应达到达到或超过 M 所需的最小值 没有其他组合可以提供更好的结果 将在 PHP 中执行此操作 因此可以使用 PH
  • 防止 Propel 插入空字符串

    当未设置列时 如何防止 Propel ORM 插入空字符串 CREATE TABLE user uid INTEGER PRIMARY KEY AUTO INCREMENT email VARCHAR 255 NOT NULL UNIQUE
  • 使用 ImageMagick 和 PHP 将 PNG 转换为 JPG 并将透明背景设置为白色

    将图像从 PNG 转换为 JPEG 时 如何使用 ImageMagick 带有 php 扩展 将透明背景设置为白色 在撰写本文时 您尚未指定正在使用哪个扩展 但如果您使用命令行 则命令将是 convert image png backgro
  • php中的条件格式化html表与时间戳比较

    echo table style width 100 tr echo td Order td echo td Destination td echo td Location td echo td Status td echo td Time
  • 如何隐藏 URL 中的锚标记

    如何隐藏地址栏中以下链接 href 的哈希值 a href index php dev name 所以它会将我重定向到index php dev name 但我希望地址栏只显示index php 您可以使用 Javascript oncli
  • CodeIgniter 控制器 - JSON - AJAX

    我正在尝试通过 AJAX 使用 CodeIgniter 发送表单构建 并尝试使用 JSON 获取响应 但是 我只在打开开发人员选项卡时看到响应 我什至不确定这是否实际上是响应 因为它显示了两个 json 数据 它所显示的只是加载旋转器 然后
  • 使用 PHP Selenium Webdriver 单击下拉菜单中的选项?

    我正在使用 PHP Selenium Webdriver 包装器Facebook https github com facebook php webdriver 任何人都可以给我一个如何单击或从选择下拉菜单中选择选项的示例吗 我已经尝试过这
  • 从类似 cronjob 的语法创建“下次运行时间”日期

    在我正在创建的应用程序中 用户可以安排重复任务 生成间隔模式的简单值是 Minute 0 59 90 each minute Hour 0 23 90 each hour Day of month 1 31 90 each day of m
  • Google Cloud SQL 上的故障转移如何运作?

    我打算将 PHP 应用程序 从 Google Cloud Platform 外部的服务器 连接到 Google Cloud SQL 我想知道如何设计应用程序以正确地对其数据库进行故障转移 根据manual https cloud googl
  • 在 WooCommerce 中添加到购物车之前清空购物车

    我正在使用 WP 作业管理器和 Woo Subscriptions Now 最初 我选择了一个套餐 Woo Subscription 然后我添加了所有细节 但没有提交 回到网站 所以要再次购买 我需要选择一个套餐 于是我选择了套餐并填写了详
  • 重写 URL,将 ID 替换为查询字符串中的标题

    我对 mod rewrite 很陌生 但我做了一些搜索 但找不到这个问题的答案 我有一个网站 它只有一个 PHP 页面 根据查询字符串中传递给它的 ID 提供数十页内容 我想重写 URL 以便此 ID消失并替换为从数据库中提取的页面标题 例
  • 在 Yii 的标准中如何获得计数 (*)

    我正在尝试构建一个具有以下内容的查询group by属性 我正在尝试得到id和count它一直告诉我count is invalid列名 我怎样才能得到count来自group by询问 工作有别名 伊伊 1 1 11 其他不及格 crit
  • 如何通过php获取网页的Open Graph协议?

    PHP 有一个简单的命令来获取网页的元标记 get meta tags 但这仅适用于具有名称属性的元标记 然而 开放图谱协议如今变得越来越流行 从网页获取 opg 值的最简单方法是什么 例如 我看到的基本方法是通过 cURL 获取页面并使用
  • 使用 json_encode() 函数在 PHP 数组中生成 JSON 键值对

    我正在尝试以特定语法获取 JSON 输出 这是我的代码 ss array 1 jpg 2 jpg dates array eu gt 59 99 us gt 39 99 array1 array name gt game1 publishe
  • PHP 中的引用

    我正在编写一个自定义博客引擎 并且希望拥有类似于 Wordpress 的引用 我可以查看 WordPress 源代码 但我真的更喜欢某种教程 但到目前为止我还没有找到 有没有关于在 PHP5 中实现 trackbacks 或 pingbac
  • 如何通过ssh检查ubuntu服务器上是否存在php和apache

    如何通过ssh检查Ubuntu服务器上apache是 否安装了php和mysql 另外如果安装的话在哪个目录 如果安装了其他软件包 例如 lighttpd 那么它在哪里 确定程序是否已安装的另一种方法是使用which命令 它将显示您正在搜索
  • 如何删除文件

    我们有一个脚本 scripts ourscript php和一个文件 media movie1 flv 当我们运行时 我们如何删除这个文件ourscript php Using unlink http php net manual en f

随机推荐

  • Go 中的反射类型和值

    我不太清楚这段代码的行为 func show i interface switch t i type case Person t reflect TypeOf i what t contains v reflect ValueOf i wh
  • 使 javax 验证错误消息更加具体

    抱歉 如果这个问题之前已在某处讨论过 如果有请给我链接 我还没有找到满意的答案 我一直在寻找一种方法 让 javax 验证提供的错误消息更加具体 我当前的 Min 注释消息在 ValidationMessages properties 文件
  • 将嵌入的 Word 文档另存为 PDF

    SCENARIO Word 文档嵌入到 Excel 2011 文件中 我需要将其另存为 pdf 如果是 Excel 2010 那么就不会有问题 因为 Win PC 中的 MS Office 支持 OLE 自动化 我尝试过什么 这是我在 Ex
  • 如何使具有不同子视图的 UITableViewCell 可重用?

    我有一个UITableView我自然地在其中展示 UITableViewCells它们都属于同一类 我们称之为MyCell 所以我有一个MyCell xib one MyCell h和一个MyCell m 不幸的是 该单元格确实包含一个子视
  • 为什么使用 invokedynamic 调用 Java 8 lambda?

    The invokedynamic指令用于帮助虚拟机在运行时确定方法引用 而不是在编译时硬连线它 这对于动态语言很有用 在动态语言中 直到运行时才知道确切的方法和参数类型 但 Java lambda 的情况并非如此 它们被转换为具有明确定义
  • 有人可以解释一下 CSS 媒体查询吗?

    我读过关于他们的文章CSS3 info 但我觉得它解释得不够好 我也无法让他们的示例随着我的屏幕尺寸而改变 我在 Safari FF Chrome 中尝试过 这是一个尚未准备好实施的功能吗 如果我想在浏览器窗口宽度小于1024px时调整一些
  • 将保管库机密注入 Kubernetes Pod 环境变量

    我正在尝试在需要 PostgresSQL 的 Kubernetes 环境中安装 Sonarqube 我正在使用外部 Postgres 实例 并且在 Vault 中设置了凭证 kv 密钥 SonarQube helm Chart 在容器中创建
  • Android - 触摸监听器触发两次

    在我的代码中 按钮的 ontouch 侦听器被触发两次 请在下面找到代码 我正在使用谷歌 API 2 2 java文件中的代码 submit button Button findViewById R id submit submit but
  • 拉伸和缩放 CSS 背景

    有没有办法让 CSS 中的背景拉伸或缩放以填充其容器 Use the CSS 3财产background size my container background size 100 auto width and height can be
  • 清除Python中所有lru_cache

    我在 python 中有一些带有 lru cache 缓存的函数 例如 lru cache maxsize None def my function 虽然我可以单独清除缓存 例如my function cache clear 有没有办法一次
  • 将字符串转换为私钥和公钥 (RSA)

    私钥和公钥的两个字符串是 static String Public MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDH wPrKYG1KVlzQUVtBghR8n9d n zcShSZo0 3KgyVdOea7
  • Mongoose批量更新操作

    有没有办法对猫鼬的集合进行批量更新 我发现的策略使用原始收集驱动程序 如下所示 var bulk Person collection initializeOrderedBulkOp bulk find query update update
  • 我可以使用 Maven 依赖项的路径作为属性吗?

    我的 pom xml 中有一个 Maven 依赖项 如下所示
  • Win32 应用程序窗口最终停止在 Windows 7 上绘制

    我有一个用 C 没有 MFC 或 NET 编写的大型复杂应用程序 使用该软件最频繁的客户端将在启动该软件后大约一个小时内达到所有窗口都停止绘制的状态 我们收到报告称应用程序已 挂起 因为据他们所知没有发生任何事情 实际上 应用程序正在运行
  • 如何避免在 Excel VBA 中使用 Select

    我听说过很多关于使用的厌恶情绪 这是可以理解的 Select在 Excel VBA 中 但我不确定如何避免使用它 我发现如果我能够使用变量而不是变量 我的代码将更具可重用性Select功能 但是 我不确定如何指代事物 例如ActiveCel
  • ASP.NET MVC 是无状态的吗? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 我听说 MVC NET 是
  • 为什么我们使用模板而不是函数?

    只是寻找一些好的理由 这样我就可以开始了解它们 避免重复除了不同类型之外其他方面相同的代码 有时 您根本不能依赖隐式转换或提升 也不能将所有内容都填充到对象层次结构中
  • 如何创建自动启动的C++程序

    我正在用 C 创建一个程序 我希望能够选择让用户让它在 Windows 中自动启动 因此 当用户启动计算机时 Windows 将自动启动该程序 我已经阅读过有关修改注册表或将其放入启动文件夹中的内容 但是最好的 干净 方法是什么 启动文件夹
  • 哈希表到底是什么?

    它们是什么以及它们如何工作 它们用在哪里 我什么时候应该 不 使用它们 我听过这个词很多次 但我不知道它的确切含义 我听到的是 它们允许关联数组 通过哈希函数发送数组键 该函数将其转换为 int 然后使用常规数组 我这样说对吗 注意 这不是
  • Laravel 5.2 的软删除级联

    我正在尝试在 Laravel 中实现软删除 这是我的人际关系 Tournament hasMany CategoryTournament hasOne CategorySettings Tournament hasMany Category