2016-08-24 2 views
0

Нижеприведенный код работает нормально, но я хочу установить public static $averageEvaluationCount = 3; из базы данных, чтобы я мог динамически изменять $averageEvaluationCount.Изменение значения статической переменной из класса laravel php

<?php 

namespace App\Models; 

use DateTime; 
use Illuminate\Database\Eloquent\Collection; 
use Illuminate\Support\Facades\Config; 
use Illuminate\Support\Facades\DB; 

class Post extends BaseDBModel 
{ 
    public function __construct() 
    { 
     $evalCountQuery = DB::table('averageEvaluations')->select('times')->get(); 
     $evalCounts = $evalCountQuery[0]->times; 

    } 

    public static $x = 3; 
    protected $table = 'posts'; 
    public static $pointsPerKool = 10; 
    public static $averageEvaluationValue = 8; 
    public static $averageEvaluationCount = 3; //I want to change this value 3 to a value from database $evalCounts 
    protected static $intervalForRedPoint = 1; 
    public static $commentRequiredLowThreshold = 10; 
    protected static $intervalForBluePoint = 3; 
    protected static $rateThresholdToMarkAsGoldWithK = 8; 
    protected static $daysToFreeze = 4320; 
} 
+1

И проблема? –

+0

'self :: $ averageEvaluationCount = something;' – RiggsFolly

+0

@MarkBaker Проблема заключается в том, что я изменяю «public static $ averageEvaluationCount = 3;» to public static $ averageEvaluationCount = $ evalCounts; он выдает следующую ошибку: FatalErrorException в строке Post.php 24: Константное выражение содержит недопустимые операции –

ответ

0
public function __construct() 
{ 
    $evalCountQuery = DB::table('averageEvaluations') 
     ->select('times')->get(); 
    self::$averageEvaluationCount = $evalCountQuery[0]->times; 
} 

ИЛИ

public function __construct() 
{ 
    self::$averageEvaluationCount = DB::table('averageEvaluations') 
     ->select('times') 
     ->first() 
     ->times; 
} 
+0

ОК, я добавил код в соответствии с вашей инструкцией, как показано ниже, но все же он принимает твердое значение из> этой строки: public static $ averageEvaluationCount = 3; 'public function __construct() { $ evalCountQuery = DB :: table ('averageEvaluations') -> select ('times') -> get(); self :: $ averageEvaluationCount = 1; // $ evalCountQuery [0] -> times; } ' –

+0

Как вы используете? '$ post = new Post(); $ theCount = $ post :: $ averageEvaluationCount' должен работать. Сначала конструкцию нужно вызвать для значения, которое нужно изменить. –

Смежные вопросы