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 } 

gives the error Cannot use a variable

in php storm, for some reason in the foreach fragment ($ workerObject-> workerFunctions as $ workerFunction) workerFunctions does not define as part of a variable and highlights it with a different color and use app \ models \ WorkerFunction; shown as not used.

in models here are such connections

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

above is written incorrectly. error fixed below

 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'][$workerFunction->id]['worker_function_id'] = $workerFunction->id; foreach ($workerFunction->function as $function) { $scripts[$workerObject->id]['worker_object'][$workerFunction->id]['worker_function'][$function->id]['function_id'] = $function->id; } } } 
  • Good day. Highlights in a different color because you never use this model anywhere. What exactly is the string sworn by "Cannot use a scalar value as an array"? - user216615
  • @slo_nik figured out. misunderstood the topic with scalars - kem ozn
  • one
    @kemozn If possible, post the found solution in the answer to your question . I am sure it will help many of your colleagues in the future. - Nicolas Chabanovsky ♦

0