Action query error

I have this form

7130

Inspection_sheet.PNG

And when I click on the continue submit button, it displays this error

7131

inspection_sheet_error.PNG

See my code below:

Inspection

Controller




    public function actionUpdate($building_id, $bip_id, $inspector_id)

    {

      $model = new InspectionBooking();


//        $model = $this->findModel($id);

        $rating = new InspectionRatingScale();

        $scoreditem = new Scoreditem();

        $scoreditems=$scoreditem->getBuildingScoreditem($building_id);

        $scoredequipment = new ScoredEquipment();

        $scoredequipments=$scoredequipment->getBuildingScoredequipment($building_id);

        $scoreditemscore = new ScoredItemScore();

        $scoredequipmentscore = new ScoredEquipmentScore();

        $scoreditemscore1=$scoreditemscore->getScore($building_id,$bip_id);

        $scoredequipmentscore1=$scoredequipmentscore->getScore($building_id,$bip_id);

        $inspectioncomment = new InspectionComment();   

        $inspectioncomment=$inspectioncomment->find('building_id=:buildingid and bookinspection_id=:bkinspid',array(':buildingid'=>$building_id,':bookinspection_id'=>$bip_id));   


        if(!isset($inspectioncomment))

            $inspectioncomment = new InspectionComment();


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

        foreach ($_POST['InspectionRatingScale']['scoreditem'] as $key=>$value)

        {

                $scoreditemscore=$scoreditemscore->find('building_id=:buildingid and bookinspection_id=:bkinspid and item_id=:id',array(':buildingid'=>$building_id,':bkinspid'=>$bip_id,':id'=>$key));

                if(!isset($scoreditemscore))

                    $scoreditemscore = new ScoredItemScore();

              //  die(var_dump($scoreditemscore));

                $scoreditemscore->item_id=$key;

                $scoreditemscore->rating=$value['rating_text'];

                $scoreditemscore->date_inspected=Date("Y/m/d");

                $scoreditemscore->date_updated=  Date("Y/m/d");

                $scoreditemscore->scored_comment= $_POST['ScoredItemScore']['scored_comment'];

                $scoreditemscore->building_id=$building_id;

                $scoreditemscore->bookinspection_id=$bip_id;

                $scoreditemscore->inspector_id=$inspector_id;                

                $scoreditemscore->save();

        }


        foreach ($_POST['InspectionRatingScale']['scoredequipment'] as $key=>$value)

        {

                $scoredequipmentscore=$scoredequipmentscore->find('building_id=:buildingid and bookinspection_id=:bkinspid and equipment_id=:id',array(':buildingid'=>$building_id,':bkinspid'=>$bip_id,':id'=>$key));

                if(!isset($scoredequipmentscore))

                    $scoredequipmentscore = new ScoredEquipmentScore();

                $scoredequipmentscore->item_id=$key;

                $scoredequipmentscore->rating=$value['rating_text'];

                $scoredequipmentscore->date_inspected=Date("Y/m/d");

                $scoredequipmentscore->date_updated=  Date("Y/m/d");

                $scoredequipmentscore->scored_comment= $_POST['ScoredequipmentScore']['scored_comment'];

                $scoredequipmentscore->building_id=$building_id;

                $scoredequipmentscore->bookinspection_id=$bip_id;

                $scoredequipmentscore->inspector_id=$inspector_id;                

                $scoredequipmentscore->save();

/*

                if($coreditemscore->validate())

                    $coreditemscore->save();

            else

                die(var_dump($coreditemscore->getErrors()));

*/

        }   


        $inspectioncomment=$inspectioncomment->find('building_id=:buildingid and bookinspection_id=:bkinspid',array(':buildingid'=>$building_id,':bkinsid'=>$bip_id));

        if(!isset($inspectioncomment))

        $inspectioncomment = new InspectionComment();

        $inspectioncomment->comment_supervisor=$_POST['InspectionComment']['comment_supervisor'];

        $inspectioncomment->bookinspection_id=$bip_id;

        $inspectioncomment->building_id=$building_id;

        $inspectioncomment->save();


        if(isset($_POST['continue']))

        {

        //    $this->redirect(array('view','id'=>$id,'appraisal_id'=>$appraisal_id));

            $this->redirect(['view', 'building_id' => $building_id, 'bookinspection_id' => $bip_id, 'inspector_id' => $inspector_id ]);

        }        

/*

        if ($model->load(Yii::$app->request->post()) && $model->save()) {

            return $this->redirect(['view', 'id' => $model->bookinspection_id]);

        } else {

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

                'model' => $model,

//                'building_id' => $building_id,

            ]);

        } 

*/

        }


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

//        'model' => $model,

        'rating' => $rating,

//        'scoreditem' => $scoreditem,

        'scoreditems' => $scoreditems,

//        'scoredequipment' => $scoredequipment,

        'scoredequipments' => $scoredequipments,        

        'scoreditemscore'=>$scoreditemscore1,

        'scoredequipmentscore'=>$scoredequipmentscore1,

        'inspectioncomment'=>$inspectioncomment,

            ]);  

    } 



View




<?php


use yii\helpers\Html;

use yii\widgets\DetailView;

use yii\helpers\Url;

use yii\widgets\ActiveForm;

use yii\helpers\ArrayHelper;

use yii\jui\DatePicker;

use kartik\grid\GridView;

use kartik\builder\TabularForm;

use kartik\widgets\Select2;

use kartik\depdrop\DepDrop;

use app\modules\inspection\models\Inspection;

use app\modules\inspection\models\ScoredItemScore;

use app\modules\inspection\models\ScoredEquipmentScore;

use app\modules\inspection\models\InspectionRatingScale;

use app\modules\inspection\models\InspectionBooking;

use app\modules\inspection\models\InspectionComment;

use app\modules\consumers\models\Building;

use app\modules\contractors\models\Inspector;







/* @var $this yii\web\View */

/* @var $model app\models\Inspector */

/*

$this->title = 'Update Inspection: ' . ' ' . $model->inspectionsheet_id;

$this->params['breadcrumbs'][] = ['label' => 'Inspectors', 'url' => ['index']];

$this->params['breadcrumbs'][] = ['label' => $model->inspectionsheet_id, 'url' => ['view', 'id' => $model->inspectionsheet_id]];

$this->params['breadcrumbs'][] = 'Update';

*/

//$this->title = 'Building Inspection';

//$title = 'Inspection Sheet';

$this->title = 'Building Inspection';

$this->params['breadcrumbs'][] = $this->title;

?>


<style type="text/css">

/* tbody#special td+td+td {

  background:red; 

  */

tr.group,

tr.group:hover {

    background-color: #ddd !important;  

}

</style>





<div class="col-xs-12 col-lg-12">


<!--<div class="inspector-update">  -->


<!--</div>-->

<!--</div>-->

<div class="inspection-form">

  <?php $form = ActiveForm::begin(['id' => 'inspection-form']); ?>


<h1>Inspection Sheet</h1>




<!-- Main content -->

<section class="content">

      <div class="row">

        <div class="col-xs-12">


          <div class="box">

            <div class="box-header">

              <h3 class="box-title">Scoring Items</h3>

            </div>

      <!-- /.box-header -->

            <div class="box-body">

              <table id="example1" class="table table-bordered table-striped">

                <thead>

                <tr>                 

                  <th>Activity</th>

                  <th>Building Rating</th>

                  <th>Comment</th>

                </tr>

                </thead>

                <tbody>

    <?php //$competencies=$competency->findAll();

    

        if(count($scoreditemscore)>=1){

    foreach ($scoreditemscore as $cvalue) 

    {

     ?>                  

                <tr>

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

                  <td>


                  <?php 

                  $name="InspectionRatingScale[scoreditem][$cvalue[item_id]][rating_text]";

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

                  //echo $form->dropDownList($rating, 'rating_text', ArrayHelper::map($rating->findAll(),'rating_value','rating_text'),array('class'=>'form-control','name'=>$name,'options'=>$yn))->label(false);

                  echo $form->field($rating, 'rating_text')->dropDownList(ArrayHelper::map(\app\modules\inspection\models\InspectionRatingScale::find()->all(),'rating_value','rating_text'), ['name'=>$name,'options'=>$yn])->label(false);

                      ?> 


                  </td>

                  <td>

                      <?php echo $form->field($scoreditemscore, 'scored_comment')->textInput() ?>

                  </td>

                </tr>

    <?php 

    }

        }

        else{

            foreach ($scoreditems as $cvalue)

            {

                ?>                

                <tr>

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

                  <td>

                  <?php

                    $name="InspectionRatingScale[scoreditem][$cvalue[item_id]][rating_text]";

                 //   echo $form->dropDownList($rating, 'rating_text', ArrayHelper::map($rating->findAll(''),'rating_value','rating_text'),array('class'=>'form-control','name'=>$name));

                    echo $form->field($rating, 'rating_text')->dropDownList(ArrayHelper::map(\app\modules\inspection\models\InspectionRatingScale::find()->all(),'rating_value','rating_text'), ['name'=>$name])->label(false);

       // $listData=ArrayHelper::map($countries,'code','name');

       // echo $form->field($model, 'name')->dropDownList($listData, ['prompt'=>'Choose...']);

      //                $name="InspectionRatingScale[scoreditem][$cvalue[rating_id]][rating_text]";

       //               echo $form->dropDownList($rating, 'rating_text', ArrayHelper::map($rating->findAll(),'rating_value','rating_text'),array('class'=>'form-control','name'=>$name));

                      ?>

                  </td>

                  <td>

                    <?php

                //    die(var_dump($scoreditem));

                    $sc=new ScoredItemScore();

                    echo $form->field($sc, 'scored_comment')->textInput()->label(false);;   

                     ?>              

                  </td>

                </tr>

 

<?php

    }

    }

    ?>                                          

        </tbody>               

              </table>

            </div>


      </div>


          <div class="box">

            <div class="box-header">

              <h3 class="box-title">Equipments</h3>

            </div>

      <!-- /.box-header -->

            <div class="box-body">

              <table id="example1" class="table table-bordered table-striped">

                <thead>

                <tr>

                  <th>Equipment Category</th>

                  <th>Equipment Sub Category</th>                  

                  <th>Activity</th>

                  <th></th>

                  <th>Comment</th>

                </tr>

                </thead>

                <tbody>

    <?php 

    




        if(count($scoredequipmentscore)>=1){

    foreach ($scoredequipmentscore as $cvalue) 

    {

     ?>                  

                <tr>

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

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

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

                  <td>

                  <?php 

                  $name="InspectionRatingScale[scoredequipment][$cvalue[equipment_id]][rating_text]";

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

                  //echo $form->dropDownList($rating, 'rating_text', ArrayHelper::map($rating->findAll(),'rating_value','rating_text'),array('class'=>'form-control','name'=>$name,'options'=>$yn))->label(false);

                  echo $form->Field($rating, 'rating_text')->dropDownList(ArrayHelper::map(\app\modules\inspection\models\InspectionRatingScale::find()->all(),'rating_value','rating_text'), ['name'=>$name,'options'=>$yn])->hiddenInput()->label(false);

                      ?> 

                  </td>


                  <td>

                    <?php

                //    die(var_dump($scoreditem));

                    $sc1=new ScoredEquipmentScore();

                    echo $form->field($sc1, 'scored_comment')->textInput()->label(false);  

                     ?>

                  </td>

                </tr>

    <?php 

    }

        }

        else{

            foreach ($scoredequipments as $cvalue)

            {

                ?>                

                <tr>

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

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

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

                  <td>

                  <?php

                    $name="InspectionRatingScale[scoredequipment][$cvalue[equipment_id]][rating_text]";

                 //   echo $form->dropDownList($rating, 'rating_text', ArrayHelper::map($rating->findAll(''),'rating_value','rating_text'),array('class'=>'form-control','name'=>$name));

                    echo $form->Field($rating, 'rating_text')->dropDownList(ArrayHelper::map(\app\modules\inspection\models\InspectionRatingScale::find()->all(),'rating_value','rating_text'), ['name'=>$name])->hiddenInput()->label(false);

//Map Your Model Data using date group Array helper Map Group in yii2

//$model = Registration::findAll();

//$registrationModels = ArrayHelper::map($model , 'event_id' ,'class_id' ,'dates');

                      ?>

                  </td>

                  <td>

                    <?php

                //    die(var_dump($scoreditem));

                    $sc1=new ScoredEquipmentScore();

                    echo $form->field($sc1, 'scored_comment')->textInput()->label(false);  

                     ?>              

                  </td>

                </tr>

<?php

    }

    }

    ?> 

        </tbody>               

              </table>

            </div>


      </div>




          <div class="box">

            <div class="box-header">

              <h3 class="box-title">Overall Comment:</h3>

            </div>

      <!-- /.box-header -->

            <div class="box-body">

<?php

    //  echo(CHtml::label('Text Area', 'name'));

//    echo($form->textArea($supervisorcomment,'comment_supervisor',array('class'=>'input-block-level','rows'=>'6')));

    $ic=new InspectionComment();

    echo $form->field($ic, 'comment_supervisor')->textArea(['rows' => '6'])->label(false);

?>

            </div>


      </div>




        </div>

        <!-- /.col -->

      </div>

      <!-- /.row -->

</section>

<!-- /.content -->




<div class="form-group">

<div class="col-xs-12 col-sm-2 col-lg-2">

  <button id="but" class="btn btn-primary btn-block btn-lg" name="cancel" type="submit">Cancel</button>

</div>  

<div class="col-xs-12 col-sm-2 col-lg-2">

  <button id="but1" class="btn btn-primary btn-block btn-lg" name="continue" type="submit">Continue >></button>

</div>

</div>


<?php ActiveForm::end(); ?>

</div>  <!-- /.End of Inspection Sheet -->


</div>  <!-- /.End of col-xs-12 col-lg-12 -->





<!-- page script -->

<script>

  $(function () {


$("#example1").DataTable(

function groupTable($rows, startIndex, total){

if (total === 0){

return;

}

var i , currentIndex = startIndex, count=1, lst=[];

var tds = $rows.find('td:eq('+ currentIndex +')');

var ctrl = $(tds[0]);

lst.push($rows[0]);

for (i=1;i<=tds.length;i++){

if (ctrl.text() ==  $(tds[i]).text()){

count++;

$(tds[i]).addClass('deleted');

lst.push($rows[i]);

}

else{

if (count>1){

ctrl.attr('rowspan',count);

groupTable($(lst),startIndex+1,total-1)

}

count=1;

lst = [];

ctrl=$(tds[i]);

lst.push($rows[i]);

}

}

}

groupTable($('#example1 tr:has(td)'),0,3);

$('#example1 .deleted').remove();

  );




//    $("#example1").DataTable();

//    $("#example2").DataTable();

    $('#example2').DataTable({

      "paging": true,

      "lengthChange": false,

      "searching": true,    ///"searching": false,

      "ordering": true,

      "info": true,

      "autoWidth": false

    });

  });


</script>



Model




<?php


namespace app\modules\inspection\models;


use Yii;

use app\modules\inspection\models\Inspection;

use app\modules\inspection\models\InspectionSearch;

use app\modules\consumers\models\Building;

use app\modules\contractors\models\Inspector;

use app\modules\User;


class Inspection extends \yii\db\ActiveRecord

{

    /**

     * @inheritdoc

     */

    public static function tableName()

    {

        return 'inspection_sheet';

    }


    /**

     * @inheritdoc

     */

    public function rules()

    {

        return [

            [['name', 'building_id', 'inspector_id', 'date_inspected', 'compliance_score'], 'required'],

            [['building_id', 'inspector_id'], 'integer'],

            [['name'], 'string'],

            [['inspection_comment'], 'string'],

            [['name'], 'string', 'max' => 254]

            

        ];

    }


    /**

     * @inheritdoc

     */

    public function attributeLabels()

    {

        return [

            'name' => 'Inspection Sheet Name',

            'building_id' => 'Building',

            'inspector_id' => 'Inspector',

            'compliance_score' => 'Score',

            'inspection_comment' => 'Inspection Comment',

            'date_inspected' => 'Date Inspected',

        ];

    }


    public static function getBuildingInspectionCategory($bid)

    {

    $buildingIcc = self::find()->andWhere(['is_status'=>0, 'building_id'=>$bid]);

    return $buildingIcc;

    }


    public function getInspectionInspector()

    {

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

    }


    public function getInspectionBuilding()

    {

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

    }


    public static function getInspectionView($inspector=-1,$appraisal=-1)

    {

        $conection=Yii::$app()->db;

        

    }

    public static function getRatingScale()

    {

        $conection=Yii::$app()->db;

        $sql="select * from inspection_rating_scale";

        $command=$conection->createCommand($sql);

        $vapp=$command->queryAll();

        return new ArrayDataProvider($vapp);

    }  

   

}



ScoredItem Model




    public function getTariff()

    {

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

    }


    public function getBuildingTariff()

    {

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

    }


    public function getBuildingScoreditem($building_id)

    {

        // @todo Please modify the following code to remove attributes that should not be searched.

        

        $conection=Yii::$app->db;

//        return $vappcom;

        $sql="select si.* from scored_item si join building b on (b.tariff_id=si.tariff_id and b.building_id=$building_id)";

        $command=$conection->createCommand($sql);

        $vappcom=$command->queryAll();

        return $vappcom;

    } 


    public static function getTariffScoredItem($tid)

    {

    $tariffSci = self::find()->andWhere(['tariff_id'=>$tid]);

    return $tariffSci;

    } 



ScoredEquipment Model




    public function getBuildingTariff()

    {

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

    }    


    public function getBuildingScoredequipment($building_id)

    {

        // @todo Please modify the following code to remove attributes that should not be searched.

        

        $conection=Yii::$app->db;

  //      return $vappcom;

        $sql="select se.* from scored_equipment se join building b on (b.tariff_id=se.tariff_id and b.building_id=$building_id)";

        $command=$conection->createCommand($sql);

        $vappcom=$command->queryAll();

        return $vappcom;

    } 


    public static function getTariffScoredEquipment($tid)

    {

    $tariffSci = self::find()->andWhere(['tariff_id'=>$tid]);

    return $tariffSci;

    } 



[b]

ScoreItemScore Model

[/b]




class ScoredItemScore extends \yii\db\ActiveRecord

{

    /**

     * @inheritdoc

     */

    public static function tableName()

    {

        return 'scored_item_score';

    }


    /**

     * @inheritdoc

     */

    public function rules()

    {

        return [

            [['building_id', 'bookinspection_id', 'item_id'], 'required'],

            [['building_id', 'inspector_id', 'bookinspection_id', 'item_id', 'rating', 'building_rating'], 'integer'],

            [['date_inspected', 'date_updated'], 'safe'],

            [['scored_comment'], 'string', 'max' => 200]

        ];

    }


    /**

     * @inheritdoc

     */

    public function attributeLabels()

    {

        return [

            'item_score_id' => 'Item Score',

            'building_id' => 'Building',

            'inspector_id' => 'Inspector',

            'bookinspection_id' => 'Inspection Booking',

            'item_id' => 'Item',

            'scored_comment' => 'Scored Comment',

            'rating' => 'Rating',

            'date_inspected' => 'Date Inspected',

            'date_updated' => 'Date Updated',

            'building_rating' => 'Building Rating',

        ];

    }


    public static function getScore($building_id,$bip_id)

    {

        $conection=Yii::$app->db;

        $sql="select irs.rating_text, sis.rating,sis.building_rating, si.item_name,si.item_id from scored_item si left join scored_item_score sis on (si.item_id=sis.item_id and sis.building_id=$building_id) join inspection_rating_scale irs on irs.rating_id=sis.rating where sis.building_id=$building_id and sis.bookinspection_id=$bip_id";

        $command=$conection->createCommand($sql);

        $vappcom=$command->queryAll();

        return $vappcom;

    }  



ScoredEquipmentScore Model




<?php


namespace app\modules\inspection\models;


use Yii;


class ScoredEquipmentScore extends \yii\db\ActiveRecord

{

    /**

     * @inheritdoc

     */

    public static function tableName()

    {

        return 'scored_equipment_score';

    }


    /**

     * @inheritdoc

     */

    public function rules()

    {

        return [

            [['building_id', 'bookinspection_id', 'equipment_id'], 'required'],

            [['building_id', 'inspector_id', 'bookinspection_id', 'equipment_id', 'rating', 'building_rating'], 'integer'],

            [['date_inspected', 'date_updated'], 'safe'],

            [['scored_comment'], 'string', 'max' => 200]

        ];

    }


    /**

     * @inheritdoc

     */

    public function attributeLabels()

    {

        return [

            'equipment_score_id' => 'Equipment Score ID',

            'building_id' => 'Building ID',

            'inspector_id' => 'Inspector ID',

            'bookinspection_id' => 'Bookinspection ID',

            'equipment_id' => 'Equipment ID',

            'scored_comment' => 'Scored Comment',

            'rating' => 'Rating',

            'date_inspected' => 'Date Inspected',

            'date_updated' => 'Date Updated',

            'building_rating' => 'Building Rating',

        ];

    }


    public static function getScore($building_id,$bip_id)

    {

        $conection=Yii::$app->db;

        $sql="select irs.rating_text, ses.rating,ses.building_rating, se.equipment_category, se.equipment_sub_category, se.item_name,se.equipment_id from scored_equipment se left join scored_equipment_score ses on (se.equipment_id=ses.equipment_id and ses.building_id=$building_id) join inspection_rating_scale irs on irs.rating_id=ses.rating where ses.building_id=$building_id and ses.bookinspection_id=$bip_id";

        $command=$conection->createCommand($sql);

        $vappcom=$command->queryAll();

        return $vappcom;

    }     

      

}



InspectionComment Model




<?php


namespace app\modules\inspection\models;


use Yii;


/**

 * This is the model class for table "inspection_comment".

 *

 * @property integer $inspection_comment_id

 * @property integer $building_id

 * @property integer $bookinspection_id

 * @property integer $inspector_id

 * @property string $comment_supervisor

 * @property string $equipment_comment

 * @property string $item_comment

 * @property string $consumer_comment

 * @property string $comment_approver

 */

class InspectionComment extends \yii\db\ActiveRecord

{

    /**

     * @inheritdoc

     */

    public static function tableName()

    {

        return 'inspection_comment';

    }


    /**

     * @inheritdoc

     */

    public function rules()

    {

        return [

            [['building_id', 'bookinspection_id', 'equipment_comment'], 'required'],

            [['building_id', 'bookinspection_id', 'inspector_id'], 'integer'],

            [['comment_supervisor', 'equipment_comment', 'item_comment', 'consumer_comment', 'comment_approver'], 'string']

        ];

    }


    /**

     * @inheritdoc

     */

    public function attributeLabels()

    {

        return [

            'inspection_comment_id' => 'Inspection Comment ID',

            'building_id' => 'Building ID',

            'bookinspection_id' => 'Bookinspection ID',

            'inspector_id' => 'Inspector ID',

            'comment_supervisor' => 'Comment Supervisor',

            'equipment_comment' => 'Equipment Comment',

            'item_comment' => 'Item Comment',

            'consumer_comment' => 'Consumer Comment',

            'comment_approver' => 'Comment Approver',

        ];

    }

}



What’s causing this error and how do I resolve it.

Unknown Property – yii\base\UnknownPropertyException

Setting unknown property: yii\db\ActiveQuery::item_id

Please help me out.

Unfortunately the snapshot of the error message is resized so it’s not readable.

However, according to the message you have copied I would guess the problem is here:


                $scoredequipmentscore=$scoredequipmentscore->find('building_id=:buildingid and bookinspection_id=:bkinspid and equipment_id=:id',array(':buildingid'=>$building_id,':bkinspid'=>$bip_id,':id'=>$key));

                if(!isset($scoredequipmentscore))

                    $scoredequipmentscore = new ScoredEquipmentScore();

                $scoredequipmentscore->item_id=$key;



$scoredequipmentscore holds the ActiveQuery class returned by the find() method. And this class don’t have the “item_id” property.

I guess you wanted to call the ActiveQuery::one() method to retrieve the ScoredEquipmentScore model instance.

this is the error




Unknown Property – yii\base\UnknownPropertyException


Setting unknown property: yii\db\ActiveQuery::item_id

1. in C:\xampp\htdocs\ess\vendor\yiisoft\yii2\base\Component.php at line 197

188189190191192193194195196197198199200201202203204205206                    $behavior->$name = $value;

 

                    return;

                }

            }

        }

        if (method_exists($this, 'get' . $name)) {

            throw new InvalidCallException('Setting read-only property: ' . get_class($this) . '::' . $name);

        } else {

            throw new UnknownPropertyException('Setting unknown property: ' . get_class($this) . '::' . $name);

        }

    }

 

    /**

     * Checks if a property value is null.

     * This method will check in the following order and act accordingly:

     *

     *  - a property defined by a setter: return whether the property value is null

     *  - a property of a behavior: return whether the property value is null

2. in C:\xampp\htdocs\ess\modules\inspection\controllers\InspectionController.php – yii\base\Component::__set('item_id', 56) at line 128

122123124125126127128129130131132133134        foreach ($_POST['InspectionRatingScale']['scoreditem'] as $key=>$value)

        {

                $scoreditemscore=$scoreditemscore->find('building_id=:buildingid and bookinspection_id=:bkinspid and item_id=:id',array(':buildingid'=>$building_id,':bkinspid'=>$bip_id,':id'=>$key));

                if(!isset($scoreditemscore))

                    $scoreditemscore = new ScoredItemScore();

              //  die(var_dump($scoreditemscore));

                $scoreditemscore->item_id=$key;

                $scoreditemscore->rating=$value['rating_text'];

                $scoreditemscore->date_inspected=Date("Y/m/d");

                $scoreditemscore->date_updated=  Date("Y/m/d");

                $scoreditemscore->scored_comment= $_POST['ScoredItemScore']['scored_comment'];

                $scoreditemscore->building_id=$building_id;

                $scoreditemscore->bookinspection_id=$bip_id;

3. app\modules\inspection\controllers\InspectionController::actionUpdate('1', '1', '1')

4. in C:\xampp\htdocs\ess\vendor\yiisoft\yii2\base\InlineAction.php – call_user_func_array([app\modules\inspection\controllers\InspectionController, 'actionUpdate'], ['1', '1', '1']) at line 55

5. in C:\xampp\htdocs\ess\vendor\yiisoft\yii2\base\Controller.php – yii\base\InlineAction::runWithParams(['r' => 'inspection/inspection/update', 'building_id' => '1', 'bip_id' => '1', 'inspector_id' => '1']) at line 151

6. in C:\xampp\htdocs\ess\vendor\yiisoft\yii2\base\Module.php – yii\base\Controller::runAction('update', ['r' => 'inspection/inspection/update', 'building_id' => '1', 'bip_id' => '1', 'inspector_id' => '1']) at line 455

7. in C:\xampp\htdocs\ess\vendor\yiisoft\yii2\web\Application.php – yii\base\Module::runAction('inspection/inspection/update', ['r' => 'inspection/inspection/update', 'building_id' => '1', 'bip_id' => '1', 'inspector_id' => '1']) at line 83

8. in C:\xampp\htdocs\ess\vendor\yiisoft\yii2\base\Application.php – yii\web\Application::handleRequest(yii\web\Request) at line 375

9. in C:\xampp\htdocs\ess\index.php – yii\base\Application::run() at line 18

12131415161718 

require(__DIR__ . '/vendor/autoload.php');

require(__DIR__ . '/vendor/yiisoft/yii2/Yii.php');

 

$config = require(__DIR__ . '/config/web.php');

$app = new yii\web\Application($config);

$app->run();

$_GET = [

    'r' => 'inspection/inspection/update',

    'building_id' => '1',

    'bip_id' => '1',

    'inspector_id' => '1',

];


$_POST = [

    '_csrf' => 'bzZyTGZCaGofAyZ5KHYNHiFDH3wrOgohQng9ehYNGSEFGzo6IxtQDA==',

    'InspectionRatingScale' => [

        'scoreditem' => [

            56 => [

                'rating_text' => '1',

            ],

            61 => [

                'rating_text' => '1',

            ],

            66 => [

                'rating_text' => '1',

            ],

            71 => [

                'rating_text' => '1',

            ],

            76 => [

                'rating_text' => '1',

            ],

            81 => [

                'rating_text' => '1',

            ],

            86 => [

                'rating_text' => '1',

            ],

            91 => [

                'rating_text' => '1',

            ],

            96 => [

                'rating_text' => '1',

            ],

            101 => [

                'rating_text' => '1',

            ],

            106 => [

                'rating_text' => '1',

            ],

        ],

        'rating_text' => '',

    ],

    'ScoredItemScore' => [

        'scored_comment' => '',

    ],

    'ScoredEquipmentScore' => [

        'scored_comment' => '',

    ],

    'InspectionComment' => [

        'comment_supervisor' => 'sas',

    ],

    'continue' => '',

];




So what do I do?

In the error message you can see where exactly the error is:


C:\xampp\htdocs\ess\modules\inspection\controllers\InspectionController.php at line 128

So this is the line causing the problem as I have explained in the previous message:


$scoredequipmentscore->item_id=$key;

As I mentioned before you probably intended to set the "item_id" property of the ScoredEquipmentScore model and not the ActiveQuery class which is held by the $scoredequipmentscore variable.

To get the ScoredEquipmentScore instance you can, for example, chain the one() method an the end of this line:


$scoredequipmentscore=$scoredequipmentscore->find('building_id=:buildingid and bookinspection_id=:bkinspid and equipment_id=:id',array(':buildingid'=>$building_id,':bkinspid'=>$bip_id,':id'=>$key))->one();



When I added ->one();

as you said, it only save one row into the table. Where its an array