выдает ошибку Cannot use a scalar value as an array

159
10 апреля 2018, 04:02
 namespace app\controllers;

    use app\models\Func;
    use app\models\Worker;
    use Yii;
    use app\models\WorkerObject;
    use app\models\WorkerFunction;
    class AlgorithmAmicumController extends \yii\web\Controller
    {
        var $worker_id = 530;
        public function actionIndex()
        {
    //        $this->runFileScript($this->buildScriptArray($this->worker_id));
            $this->returnCache();
            $cache = Yii::$app->cache;                                                                                      //иницализируем cache
            $dataProvider = json_decode($cache->get('scripts'));                                                            //забираем данные из cache
            return $this->render('index', [
                'dataProvider' => $dataProvider,
            ]);
        }
        /*функция для извлечения scripts из таблицы Func*/
        public function buildScriptArray($workerId){
            $workerObjects = WorkerObject::findAll(['worker_id' => $workerId]);
            $scripts = array();
            foreach($workerObjects as $workerObject){
                $scripts[$workerObject->id]['worker_object_id'] = $workerObject->id;
                foreach ($workerObject->workerFunctions as $workerFunction) {
                    $scripts[$workerObject->id]['worker_object_id'][$workerFunction->id]['worker_function_id'] = $workerFunction->id;
                    foreach ($workerFunction->function as $function) {
                        $scripts[$workerObject->id]['worker_object_id'][$workerFunction->id]['worker_function_id'][$function->id]['function_id'] = $function->id;
                    }
                }
            }
            return $scripts;
}
        public function returnCache()
        {
            $cache = Yii::$app->cache;                                                                                      //инициализируем cache
            $forCache = $this->buildScriptArray($this->worker_id);                                                              //сливаем все в переменную
            $cache->set('scripts', json_encode($forCache));                                                            //отдаем все в cache
        }

выдает ошибку Cannot use a scalar value as an array

в php storm почему то во фрагменте foreach ($workerObject->workerFunctions as $workerFunction) workerFunctions не опредляет как часть переменной и выделяет другим цветом и use app\models\WorkerFunction; показана как не используемая.

в моделях вот такие связи

public function getWorkerObject()
    {
        return $this->hasOne(WorkerObject::className(), ['id' => 'worker_object_id']);
    }

public function getWorkerFunctions()
    {
        return $this->hasMany(WorkerFunction::className(), ['worker_object_id' => 'id']);
    }
READ ALSO
Imagemagick и штриховка

Imagemagick и штриховка

Требуется, по строке, в которой задан стиль(цвет, стиль линии и заливки и тд

165
Где ошибка в цикле?

Где ошибка в цикле?

Мне нужно что бы после лимита значений(то есть ,когда больше 4х li),заново выводился ul, уже со следующими значениями liСделал как-то так ,но естественно...

136
Передача заголовков php

Передача заголовков php

Доброго времени сутокНе понимаю в чём ошибка в коде

170
Чтение файла при помощи интерфейса SeekableIterator

Чтение файла при помощи интерфейса SeekableIterator

Всем доброго времени суток, не имел опыта работы с данных итераторомПытаюсь разобраться

154