【问题标题】:Larave database model relation between itselfLaravel 数据库模型自身之间的关系
【发布时间】:2021-06-08 11:20:37
【问题描述】:

我对如何设计一个具有自身关系的模型有一些疑问。

就我而言,我有一个带有 id 和 coach_id 的用户表。所有用户都有一个 id(显然),但角色 Runner 的用户也有 coach_id 引用角色为 Coach 的用户。

第一步是如何在 laravel 表迁移中创建 key,然后是如何在 User 模型中添加正确的关系。

【问题讨论】:

    标签: database laravel model relationship


    【解决方案1】:

    首先,确保coach_id 可以为NULL:

    $table->unsignedInteger('coach_id')->nullable();
    

    如果模型 id 使用大整数,则使用 unsignedBigInteger

    然后定义一个外键:

    $table->foreign('coach_id')
          ->references('id')
          ->on('users')
          ->onDelete('set null');
    

    使用set null 而不是cascade,因为您不想在删除coach 时删除相关用户。

    并在User模型中建立一对多关系:

    public function coach() {
      return $this->belongsTo(self::class);
    }
    

    从 Laravel > 7 你可以在迁移中使用快捷方式:

    $table->foreignId('coach_id')
          ->nullable()
          ->constrained('users')
          ->onDelete('set null');
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-17
      • 2018-05-23
      • 1970-01-01
      • 1970-01-01
      • 2018-10-17
      • 1970-01-01
      • 2016-02-06
      • 2017-02-20
      相关资源
      最近更新 更多