我目前正在使用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;
然后我的问题是,有没有一种干净的方法来检索基类和变形类的所有审核?
谢谢。
答案 0 :(得分:0)
然后我的问题是,有没有一种干净的方法来检索基类和变形类的所有审核?
您可以将以下方法添加到基类中,以获取所有审核:
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();
}