Cast::DATETIME, ]; public static function getBuilder(string $name = 'main'): Builder { $now = DateUtil::now(); $instance = new static(); $tablename = self::getTableName(); $sub = function (Builder $query) use ($tablename) { $query->selectRaw('*, rank() over (partition by park_id, adjuster_id, lineno order by start_datetime desc) as rank') ->from($tablename) ->where('start_datetime', '<=', DB::raw('CURRENT_TIMESTAMP')); }; return DB::connection($instance->getConnectionName())->table($sub, $name)->where($name . '.rank', 1); } public static function getTableName(): string { return (new static)->getTable(); } }