undefined index

I’ve been battling with this bug for some days now. Please how can I resolve it.

7184

undefinedindex.PNG

Controller




    public function actionZonalmapping()

    {


        $user = Yii::$app->getid->getId();

         $zonalSession = Yii::$app->session->get('zonal_id');

         $ZonalMaster = ZonalAdministrator::find()->andWhere(['zonal_id' => $zonalSession])->one();

         $ZonalInfo = ZonalAdministrator::findOne($ZonalMaster->zonal_id);

         $zonalZone = Zone::findOne($ZonalMaster->zone_id);

         $zone = $ZonalInfo->zone_id;


//         $zonename = Zone::findOne($ZonalMaster->zonal_id);

//         $zoning = $zonename->zone_name;


            $inspector = new Inspector();

          //  die(var_dump($inspector));

            //$inspector=Inspector::find()->andWhere(['zone_id' => $zone])->one();

            $inspector=Inspector::find()->where(['zone_id' => $zone])->all();

            //$inspector=Inspector::findAll()->andWhere(['zone_id' => $zone]);

         //   die(var_dump($inspector));


            $inspectionmapping = new InspectionMapping();

            $inspectionmapping=InspectionMapping::find()->andWhere(['zone_id' => $zone, 'is_mapped_to_zone' => 1])->all();

         //   die(var_dump($inspectionmapping));




        if(isset($_POST['submit'])){

            if($_POST['submit']=='Save'){

     //         die(var_dump('hello'));


                if(isset($_POST['Inspector'])){

            //      die(var_dump('hello'));

                    $inspectionmapping = new InspectionMapping();


                    foreach ($_POST['Inspector']['inspection_mapping'] as $key=>$value)

                    {

        //              die(var_dump('hellodd'));

                       // $inspectionmapping=$inspectionmapping->findByPk($key);

                        //$inspectionmapping=InspectionMapping::findOne($key);

                        $inspectionmapping=InspectionMapping::find($key)->one();

                       // die(var_dump($inspectionmapping));

                     //   die(var_dump($inspectionmapping=InspectionMapping::find($key)->one()));

                    //    $model = User::findOne(['username'=>'filip','password'=>'admin']);

                        $inspectionmapping->company_id=$value['company_id'];

                        die(var_dump($inspectionmapping));

                        $inspectionmapping->is_mapped_to_inspector= 1;

                        $inspectionmapping->save(false);

                    }

                }

   

            }

              //      return $this->redirect('index');                      

        }            


        return $this->render('zonalmapping', [

            'inspector' => $inspector,

            'inspectionmapping' => $inspectionmapping,

                ]); 

    }



View




      $i = 1;

      $key = 0;


    foreach ($inspectionmapping as $cvalue) 

    {

     ?>                  

                <tr>

                  <td><?php echo $i++;?></td>

                  

                  <td><?php echo $cvalue->building->building_name; ?></td>

                  <td><?php echo $cvalue->zone->zone_name; ?></td>

                  <td><?php echo $cvalue->fee->value; ?></td>

                  <td><?php echo $cvalue->tariff->tariff_group_detail; ?></td>

                  <td>


                  <?php 

                  $name="Inspector[inspection_mapping][$cvalue[inspection_mapping_id]][inspector_name]";

                   //   $yn=array("$cvalue[inspector]"=>array('selected'=>true));

                  $yn=array("$cvalue[company_id]"=>array('selected'=>true));

                  echo $form->field($inspector, 'company_id')->dropDownList(ArrayHelper::map(\app\modules\contractors\models\Inspector::find()->andWhere(['zone_id' => $zone])->all(),'company_id','inspector_name'), ['name'=>$name,'options'=>$yn])->label(false);

                      ?> 

                  </td>

                </tr>

    <?php 

    }

    ?>



This is the main form

7185

mainform.PNG

var_dump($_POST) and then check what’s there.

I did that, and I saw that it captures string inspector_name instead of int company_id. When I resolved that it generates another problem as shown below:

7186

newerror.PNG

Please help me.

Again, it’s telling you what happened exactly. Dump the structure, find out where the thing that wasn’t found is filled and fix that place.

The issue is how to resolve "property of non-object in relations"




    foreach ($inspectionmapping as $cvalue) 

    {

     ?>                  

                <tr>

                  <td><?php echo $i++;?></td>

                  

                  <td><?php echo $cvalue->building->building_name; ?></td>

                  <td><?php echo $cvalue->zone->zone_name; ?></td>

                  <td><?php echo $cvalue->fee->value; ?></td>

                  <td><?php echo $cvalue->tariff->tariff_group_detail; ?></td>

                  <td>


                  <?php 

                  $name="Inspector[inspection_mapping][$cvalue[inspection_mapping_id]][inspector_name]";

                   //   $yn=array("$cvalue[inspector]"=>array('selected'=>true));

                  $yn=array("$cvalue[company_id]"=>array('selected'=>true));

                  echo $form->field($inspector, 'company_id')->dropDownList(ArrayHelper::map(\app\modules\contractors\models\Inspector::find()->andWhere(['zone_id' => $zone])->all(),'company_id','inspector_name'), ['name'=>$name,'options'=>$yn])->label(false);

                      ?> 

                  </td>

                </tr>

    <?php 

    }

    ?>



The relations are in the model




    public function getBuilding()

    {

        return $this->hasOne(Building::className(), ['building_id' => 'building_id']);

    }   


    public function getTariff()

    {

        return $this->hasOne(BuildingTariff::className(), ['tariff_id' => 'tariff_id']);

    }   


    public function getFee()

    {

        return $this->hasOne(Fee::className(), ['fee_id' => 'fee_id']);

    }  


    public function getZone()

    {

        return $this->hasOne(Zone::className(), ['zone_id' => 'zone_id']);

    } 


    public function getInspector()

    {

        return $this->hasOne(Inspector::className(), ['company_id' => 'company_id']);

    } 



For example


<td><?php echo $cvalue->building->building_name; ?></td>

instead of




<td><?php echo $cvalue['building_id']; ?></td






    public function getBuilding()

    {

        return $this->hasOne(Building::className(), ['building_id' => 'building_id']);

    } 



and so on…

That basically means that there’s no related record. So before using it in a view you have to check if it is actually there:




<?php echo $cvalue->building ? Html::encode($cvalue->building->building_name) : 'None'; ?>



There are related records.

Since its an array, its only accepting. The var_dump shows that its an array


$cvalue['building_id']

and not


$cvalue->building->building_name

I want to display building_name, but save building_id

Please help me