danhusaker/eloquent-meta-relate

扩展 Eloquent 关联以支持隐式多态和合并

v0.1.0 2016-05-13 09:47 UTC

This package is auto-updated.

Last update: 2024-09-10 22:46:38 UTC


README

扩展 Eloquent 关联以支持隐式多态和合并

安装

使用 composer

composer require danhunsaker/eloquent-meta-relate

简单!

用法

Danhunsaker\Eloquent\Traits\MetaRelate 特性包含在任何您想扩展的模型中

use Danhunsaker\Eloquent\Traits\MetaRelate;
use Illuminate\Database\Eloquent\Model;

class BaseModel extends Model
{
    use MetaRelate;
}

隐式多态关系

现在,您可以通过提供一个类名数组,而不是单个类,在多个模型参与同一关系时创建隐式多态关系

    public function files()
    {
        return $this->hasMany([
            'App\Models\Audio',
            'App\Models\Document',
            'App\Models\Image',
            'App\Models\Video',
        ]);
    }

关系合并

您还可以合并现有关系

    public function forkedTo()
    {
        return $this->hasMany('App\Models\Fork', 'original_id')->with('fork');
    }

    public function forkedFrom()
    {
        return $this->hasMany('App\Models\Fork', 'fork_id')->with('original');
    }

    public function allForks()
    {
        return $this->createMetaRelation()
            ->merge($this->forkedTo())
            ->merge($this->forkedFrom());
    }

贡献

贡献(问题、pull 请求等)在 GitHub 上总是受欢迎。

如果您发现安全问题,请 直接给我发邮件