'integer', 'source_id' => 'integer', 'created_at' => 'datetime', ]; /** * 关联用户模型 * * @return \Illuminate\Database\Eloquent\Relations\BelongsTo */ public function user() { return $this->belongsTo(\App\Module\User\Models\User::class, 'user_id', 'id'); } /** * 按用户ID查询日志 * * @param \Illuminate\Database\Eloquent\Builder $query * @param int $userId * @return \Illuminate\Database\Eloquent\Builder */ public function scopeByUser($query, int $userId) { return $query->where('user_id', $userId); } /** * 按来源类型查询日志 * * @param \Illuminate\Database\Eloquent\Builder $query * @param string $sourceType * @return \Illuminate\Database\Eloquent\Builder */ public function scopeBySourceType($query, string $sourceType) { return $query->where('source_type', $sourceType); } /** * 按时间范围查询日志 * * @param \Illuminate\Database\Eloquent\Builder $query * @param string $startTime * @param string $endTime * @return \Illuminate\Database\Eloquent\Builder */ public function scopeByTimeRange($query, string $startTime, string $endTime) { return $query->whereBetween('created_at', [$startTime, $endTime]); } /** * 最新日志优先 * * @param \Illuminate\Database\Eloquent\Builder $query * @return \Illuminate\Database\Eloquent\Builder */ public function scopeLatest($query) { return $query->orderBy('created_at', 'desc'); } /** * 获取格式化的创建时间 * * @return string */ public function getFormattedCreatedAtAttribute(): string { return $this->created_at ? $this->created_at->format('Y-m-d H:i:s') : ''; } /** * 获取格式化的时间戳 * * @return string */ public function getTimeAttribute(): string { return $this->created_at ? $this->created_at->format('m-d H:i') : ''; } }