【问题标题】:Polymorphic Laravel Auditing Package - Retrieving polymorphic audits多态 Laravel 审计包 - 检索多态审计
【发布时间】:2018-06-29 00:09:06
【问题描述】:

我目前正在使用 Laravel Auditing (Owen-it) 包来自动审核模型,使用以下代码效果很好。

class Staff extends Model implements Auditable
{
   use \OwenIt\Auditing\Auditable;
   use SoftDeletes;

}
class Customer extends Model implements Auditable
{
   use \OwenIt\Auditing\Auditable;
   use SoftDeletes;

}

鉴于这些类中有大量字段 (> 20),我打算将这些类转换为多态关系,其中所有公共字段都驻留在基类中,并且任何类的唯一属性都将放在各自的类中.

例如——基类:

class User extends Model implements Auditable
{
   use \OwenIt\Auditing\Auditable;
   use SoftDeletes;

} 

目前我使用这样的东西来检索审计:

$staff = App\Model\Staff::find($id);
$allAudits= $staff->audits;

我的问题是,有没有一种干净的方法来检索跨基类和变形类的所有审计?

提前致谢。

【问题讨论】:

    标签: laravel laravel-5.5 polymorphic-associations laravel-auditing


    【解决方案1】:

    我的问题是,有没有一种干净的方法来检索跨基类和变形类的所有审计?

    您可以将以下方法添加到您的基类中以获取所有审核:

    public function getAllAudits(): Collection
    {
        return Audit::where(function ($query) {
            $query->where('auditable_type', get_class($this))
                ->where('auditable_id', $this->id);
        })
        ->orWhere(function ($query) {
            $morph = $this->userable; // or whatever morph relation name you have set
    
            $query->where('auditable_type', get_class($morph))
                ->where('auditable_id', $morph->id);
        })
        ->get();
    }
    

    【讨论】:

      猜你喜欢
      • 2018-11-23
      • 1970-01-01
      • 2021-09-05
      • 2013-10-16
      • 1970-01-01
      • 2019-04-15
      • 2013-06-03
      • 2011-09-13
      • 1970-01-01
      相关资源
      最近更新 更多