我目前正在使用Laravel审计(欧文-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;那么,我的问题是,是否有一种干净的方法来检索整个基类和变形类的所有审计?
提前谢谢。
发布于 2018-07-01 17:45:55
那么,我的问题是,是否有一种干净的方法来检索整个基类和变形类的所有审计?
您可以将以下方法添加到基类中,以便获取所有审核:
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();
}https://stackoverflow.com/questions/51092658
复制相似问题