首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多态Laravel审计包-检索多态审计

多态Laravel审计包-检索多态审计
EN

Stack Overflow用户
提问于 2018-06-29 00:09:06
回答 1查看 909关注 0票数 0

我目前正在使用Laravel审计(欧文-it)包自动审核模型,这是伟大的工作使用以下代码。

代码语言:javascript
复制
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个),我打算将这些类转换为一个多态关系,其中所有公共字段都驻留在基类中,并且任何类的唯一属性都将在它们各自的类中。

例如-基类:

代码语言:javascript
复制
class User extends Model implements Auditable
{
   use \OwenIt\Auditing\Auditable;
   use SoftDeletes;

} 

目前,我使用类似的方法来检索审计:

代码语言:javascript
复制
$staff = App\Model\Staff::find($id);
$allAudits= $staff->audits;

那么,我的问题是,是否有一种干净的方法来检索整个基类和变形类的所有审计?

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-01 17:45:55

那么,我的问题是,是否有一种干净的方法来检索整个基类和变形类的所有审计?

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

代码语言:javascript
复制
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();
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51092658

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档