JFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr{ gilour

File "OrdersByWeightedScore-20260314162700.php"

Full Path: /home/markqprx/iniasli.pro/common-20260222054425/Votes/OrdersByWeightedScore-20260314162700.php
File size: 828 bytes
MIME-type: text/x-php
Charset: utf-8

<?php

namespace Common\Votes;

use Illuminate\Database\Eloquent\Builder;
use Illuminate\Support\Facades\DB;

trait OrdersByWeightedScore
{
    public function scopeOrderByWeightedScore(
        Builder $query,
        $direction = 'desc',
        string $positiveCol = 'upvotes',
        string $negativeCol = 'downvotes',
    ): Builder {
        return $query
            ->select($query->getQuery()->columns ?? '*')
            ->addSelect([
                DB::raw(
                    "(($positiveCol + 1.9208) / ($positiveCol + $negativeCol) -.96 * SQRT(($positiveCol * $negativeCol) / ($positiveCol + $negativeCol) + 0.9604) / ($positiveCol + $negativeCol)) / (1 + 3.8416 / ($positiveCol + $negativeCol)) AS weighted_score",
                ),
            ])
            ->orderBy('weighted_score', $direction);
    }
}