如何使eloquent与laravel的关系迁移与table相同?

How make eloquent laravel relathionship migration with the same table?

if 而不是让用户 table 一个用户可以关注多个用户。我会有一头奶牛 table,其中每头奶牛都有一个父亲和一个母亲,而 parents 可以有许多 children。我是否需要一个外部 table 来存储它,或者我可以只在我的奶牛 table 中添加字段 cow_father_id 和 cow_mother_id? -指的是使奶牛 table 与同一头奶牛 table 建立 2 eloquent 关系 这种迁移会是什么样子?

你可以做到这一点。我也测试过。

迁移

Schema::create('cows', function (Blueprint $table) {
    $table->id();
    $table->string('name');
    $table->integer('father_id')->nullable();
    $table->integer('mother_id')->nullable();
    $table->timestamps();
});

型号

class Cow extends Model
{
    use HasFactory;

    public function father()
    {
        return $this->belongsTo(self::class, 'father_id');
    }

    public function mother()
    {
        return $this->belongsTo(self::class, 'mother_id');
    }

    public function children()
    {
        return $this->hasMany(self::class, 'father_id')->orWhere('mother_id', $this->id);
    }
}