use Query Builder to get storage size used by user

This commit is contained in:
printempw 2017-01-08 14:29:48 +08:00
parent 118d8cc649
commit 3569c43fb2

View File

@ -39,6 +39,13 @@ class User extends Model
public $timestamps = false;
protected $fillable = ['email', 'nickname', 'permission'];
/**
* Storage size used by user in KiB.
*
* @var int
*/
protected $storageUsed;
/**
* Check if user is admin.
*
@ -253,14 +260,18 @@ class User extends Model
*/
public function getStorageUsed()
{
if (is_null($this->storage_used)) {
$this->storage_used = 0;
// recalculate
$sql = "SELECT SUM(`size`) AS total_size FROM `{table}` WHERE uploader = {$this->uid}";
$result = \Database::table('textures')->fetchArray($sql)['total_size'];
$this->storage_used = $result ?: 0;
if (is_null($this->storageUsed)) {
$this->storageUsed = 0;
$result = DB::table('textures')
->select(DB::raw("SUM(size) AS total_size"))
->where('uploader', $this->uid)
->first()->total_size;
$this->storageUsed = $result ?: 0;
}
return $this->storage_used;
return $this->storageUsed;
}
/**